[i2c][core] Simplify I2C core driver bus/child relationship

Make the I2C root device create buses which create children, rather than
having the root device create both. Also remove persistent references to
buses from the root device, which makes it easier to reason about object
lifetimes and ownership.

Also:
  - Remove some includes that aren't needed
  - Make the unit tests better represent an actual use case

This change is a prerequisite for removing the transfer queue thread.

Bug: 104064
Multiply: //src/devices/i2c/drivers/i2c: 500
Test: I2C devices work on Nelson
Change-Id: I0efc8aee959e0fd9d897cc92a9d7d0495a5d7263
Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/797830
Commit-Queue: Braden Kell <bradenkell@google.com>
Reviewed-by: Christopher Anderson <cja@google.com>
Reviewed-by: Gurjant Kalsi <gkalsi@google.com>
7 files changed
tree: ee762baf72cc9d6d82a4f2d46bf8d69dc80a6162
  1. boards/
  2. build/
  3. bundles/
  4. docs/
  5. examples/
  6. products/
  7. scripts/
  8. sdk/
  9. src/
  10. third_party/
  11. tools/
  12. zircon/
  13. .clang-format
  14. .clang-tidy
  15. .editorconfig
  16. .git-blame-ignore-revs
  17. .gitattributes
  18. .gitignore
  19. .gitmodules
  20. .gn
  21. .style.yapf
  22. analysis_options.yaml
  23. AUTHORS
  24. BUILD.gn
  25. CODE_OF_CONDUCT.md
  26. CONTRIBUTING.md
  27. fuchsia.code-workspace
  28. LICENSE
  29. OWNERS
  30. PATENTS
  31. pyrightconfig.json
  32. README.md
  33. 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.