xref: /aosp_15_r20/external/pigweed/pw_i2c/backends.rst (revision 61c4878ac05f98d0ceed94b57d316916de578985)
1*61c4878aSAndroid Build Coastguard Worker.. TODO: b/331286149 - Rename this file
2*61c4878aSAndroid Build Coastguard Worker
3*61c4878aSAndroid Build Coastguard Worker.. _module-pw_i2c-impl:
4*61c4878aSAndroid Build Coastguard Worker
5*61c4878aSAndroid Build Coastguard Worker===============
6*61c4878aSAndroid Build Coastguard WorkerImplementations
7*61c4878aSAndroid Build Coastguard Worker===============
8*61c4878aSAndroid Build Coastguard Worker.. pigweed-module-subpage::
9*61c4878aSAndroid Build Coastguard Worker   :name: pw_i2c
10*61c4878aSAndroid Build Coastguard Worker
11*61c4878aSAndroid Build Coastguard WorkerTo use the ``pw_i2c`` API, you need to specify in your build system an
12*61c4878aSAndroid Build Coastguard Workerimplementation of the ``pw_i2c`` virtual interface.
13*61c4878aSAndroid Build Coastguard Worker
14*61c4878aSAndroid Build Coastguard Worker------------------------
15*61c4878aSAndroid Build Coastguard WorkerExisting implementations
16*61c4878aSAndroid Build Coastguard Worker------------------------
17*61c4878aSAndroid Build Coastguard WorkerThe following Pigweed modules are ready-made ``pw_i2c`` implementations that
18*61c4878aSAndroid Build Coastguard Workeryou can use in your projects:
19*61c4878aSAndroid Build Coastguard Worker
20*61c4878aSAndroid Build Coastguard Worker* :ref:`module-pw_i2c_linux` for Linux userspace.
21*61c4878aSAndroid Build Coastguard Worker* :ref:`module-pw_i2c_mcuxpresso` for the NXP MCUXpresso SDK.
22*61c4878aSAndroid Build Coastguard Worker* :ref:`module-pw_i2c_rp2040` for the Raspberry Pi Pico SDK.
23*61c4878aSAndroid Build Coastguard Worker
24*61c4878aSAndroid Build Coastguard WorkerSee :ref:`module-pw_i2c-quickstart` for build system configuration examples.
25*61c4878aSAndroid Build Coastguard Worker
26*61c4878aSAndroid Build Coastguard Worker------------------------------
27*61c4878aSAndroid Build Coastguard WorkerCreate your own implementation
28*61c4878aSAndroid Build Coastguard Worker------------------------------
29*61c4878aSAndroid Build Coastguard WorkerIf the available implementations don't meet your needs, you can create your
30*61c4878aSAndroid Build Coastguard Workerown:
31*61c4878aSAndroid Build Coastguard Worker
32*61c4878aSAndroid Build Coastguard Worker.. _common_pico.cc: https://pigweed.googlesource.com/pigweed/kudzu/+/refs/heads/main/applications/app_common_impl/common_pico.cc
33*61c4878aSAndroid Build Coastguard Worker
34*61c4878aSAndroid Build Coastguard Worker#. Implement the :cpp:class:`pw::i2c::Initiator` interface. See
35*61c4878aSAndroid Build Coastguard Worker   :ref:`module-pw_i2c_rp2040` for an example Raspberry Pi Pico SDK
36*61c4878aSAndroid Build Coastguard Worker   implementation and `common_pico.cc`_ for example usage of ``pw_i2c_rp2040``.
37*61c4878aSAndroid Build Coastguard Worker
38*61c4878aSAndroid Build Coastguard Worker#. In your build system, take a dependency on the ``pw_i2c`` API headers. See
39*61c4878aSAndroid Build Coastguard Worker   :ref:`module-pw_i2c-quickstart` for build system configuration examples.
40*61c4878aSAndroid Build Coastguard Worker
41*61c4878aSAndroid Build Coastguard Worker.. toctree::
42*61c4878aSAndroid Build Coastguard Worker   :maxdepth: 1
43*61c4878aSAndroid Build Coastguard Worker   :hidden:
44*61c4878aSAndroid Build Coastguard Worker
45*61c4878aSAndroid Build Coastguard Worker   Linux <../pw_i2c_linux/docs>
46*61c4878aSAndroid Build Coastguard Worker   MCUXpresso <../pw_i2c_mcuxpresso/docs>
47*61c4878aSAndroid Build Coastguard Worker   Pico SDK <../pw_i2c_rp2040/docs>
48