[ufs] Add an initialisation process using registers and UICs

This CL adds the UFSHCI initialisation process and enables the necessary
registers and UIC commands. In the total 19 steps of Host Controller
Initialisation process, it is performed until step 9, which is the step
before interrupt initialisation.
(UFSHCI Spec 3.0 section 7.1.1 "Host Controller Initialisation")

Also added registers and UIC commands tests.

Test: fx test ufs-tests
Bug: 124835
Change-Id: Ic039c71acd6e010c9b114b8738e526a3d9d71116
Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/840077
Reviewed-by: HanBin Yoon <hanbinyoon@google.com>
Fuchsia-Auto-Submit: HanBin Yoon <hanbinyoon@google.com>
Commit-Queue: Auto-Submit <auto-submit@fuchsia-infra.iam.gserviceaccount.com>
19 files changed
tree: 8fa9e460160f9f715b44807b39972fd582cc8fea
  1. boards/
  2. build/
  3. bundles/
  4. docs/
  5. examples/
  6. infra/
  7. products/
  8. scripts/
  9. sdk/
  10. src/
  11. third_party/
  12. tools/
  13. zircon/
  14. .clang-format
  15. .clang-tidy
  16. .editorconfig
  17. .git-blame-ignore-revs
  18. .gitattributes
  19. .gitignore
  20. .gitmodules
  21. .gn
  22. .ignore
  23. .style.yapf
  24. analysis_options.yaml
  25. AUTHORS
  26. BUILD.gn
  27. CODE_OF_CONDUCT.md
  28. CONTRIBUTING.md
  29. fuchsia.code-workspace
  30. LICENSE
  31. OWNERS
  32. PATENTS
  33. pyrightconfig.json
  34. README.md
  35. rustfmt.toml
README.md

Fuchsia

What is Fuchsia?

Fuchsia is an open source, general purpose operating system supporting modern 64-bit Intel and ARM processors.

We expect everyone interacting with our project to respect our code of conduct.

Read more about Fuchsia's principles.

How can I build and run Fuchsia?

See Getting Started.

Where can I learn more about Fuchsia?

See fuchsia.dev.