xref: /aosp_15_r20/hardware/interfaces/drm/1.1/README.md (revision 4d7e907c777eeecc4c5bd7cf640a754fac206ff7)
1*4d7e907cSAndroid Build Coastguard Worker# VINTF Device Manifest
2*4d7e907cSAndroid Build Coastguard Worker
3*4d7e907cSAndroid Build Coastguard WorkerIn Android Pie, an `<fqname>` tag was introduced to be able to express multiple
4*4d7e907cSAndroid Build Coastguard Workerdifferent versions of the same HAL in VINTF manifests (for DRM)
5*4d7e907cSAndroid Build Coastguard Workerin device manifest. For devices launching with previous versions of Android and
6*4d7e907cSAndroid Build Coastguard Workerupgrading to Android Pie, the device manifest must not use `<fqname>` to
7*4d7e907cSAndroid Build Coastguard Workersatisfy requirements for non-optional HALs, because older version of `libvintf`
8*4d7e907cSAndroid Build Coastguard Workerdo not recognize it, causing errors during OTA update.
9*4d7e907cSAndroid Build Coastguard Worker
10*4d7e907cSAndroid Build Coastguard WorkerAssuming that the HAL provides `@1.0::I*/default`,
11*4d7e907cSAndroid Build Coastguard Worker`@1.1::I*/clearkey` and `@1.1::I*/foo` instances:
12*4d7e907cSAndroid Build Coastguard Worker
13*4d7e907cSAndroid Build Coastguard Worker## Devices upgrading to Android Pie
14*4d7e907cSAndroid Build Coastguard Worker
15*4d7e907cSAndroid Build Coastguard Worker### `target-level=1` or `target-level=2`
16*4d7e907cSAndroid Build Coastguard Worker
17*4d7e907cSAndroid Build Coastguard WorkerFCM (framework compatibility matrix) version 2 (released in Android Oreo MR1)
18*4d7e907cSAndroid Build Coastguard Workerrequires DRM 1.0. If the new device manifest has Target FCM Version (i.e.
19*4d7e907cSAndroid Build Coastguard Worker`target-level`) 1 or 2, it should use the following snippet:
20*4d7e907cSAndroid Build Coastguard Worker
21*4d7e907cSAndroid Build Coastguard Worker```xml
22*4d7e907cSAndroid Build Coastguard Worker<hal format="hidl">
23*4d7e907cSAndroid Build Coastguard Worker    <name>android.hardware.drm</name>
24*4d7e907cSAndroid Build Coastguard Worker    <transport>hwbinder</transport>
25*4d7e907cSAndroid Build Coastguard Worker    <version>1.0</version>
26*4d7e907cSAndroid Build Coastguard Worker    <interface>
27*4d7e907cSAndroid Build Coastguard Worker        <name>ICryptoFactory</name>
28*4d7e907cSAndroid Build Coastguard Worker        <instance>default</instance>
29*4d7e907cSAndroid Build Coastguard Worker    </interface>
30*4d7e907cSAndroid Build Coastguard Worker    <interface>
31*4d7e907cSAndroid Build Coastguard Worker        <name>IDrmFactory</name>
32*4d7e907cSAndroid Build Coastguard Worker        <instance>default</instance>
33*4d7e907cSAndroid Build Coastguard Worker    </interface>
34*4d7e907cSAndroid Build Coastguard Worker    <fqname>@1.1::ICryptoFactory/clearkey</fqname>
35*4d7e907cSAndroid Build Coastguard Worker    <fqname>@1.1::IDrmFactory/clearkey</fqname>
36*4d7e907cSAndroid Build Coastguard Worker    <fqname>@1.1::ICryptoFactory/foo</fqname>
37*4d7e907cSAndroid Build Coastguard Worker    <fqname>@1.1::IDrmFactory/foo</fqname>
38*4d7e907cSAndroid Build Coastguard Worker</hal>
39*4d7e907cSAndroid Build Coastguard Worker```
40*4d7e907cSAndroid Build Coastguard Worker
41*4d7e907cSAndroid Build Coastguard Worker### `target-level=3`
42*4d7e907cSAndroid Build Coastguard Worker
43*4d7e907cSAndroid Build Coastguard WorkerFCM (framework compatibility matrix) version 3 (released in Android Pie)
44*4d7e907cSAndroid Build Coastguard Workerrequires DRM 1.1. If the new device manifest has Target FCM Version (i.e.
45*4d7e907cSAndroid Build Coastguard Worker`target-level`) 3, it should use the following snippet:
46*4d7e907cSAndroid Build Coastguard Worker
47*4d7e907cSAndroid Build Coastguard Worker
48*4d7e907cSAndroid Build Coastguard Worker```xml
49*4d7e907cSAndroid Build Coastguard Worker<hal format="hidl">
50*4d7e907cSAndroid Build Coastguard Worker    <name>android.hardware.drm</name>
51*4d7e907cSAndroid Build Coastguard Worker    <transport>hwbinder</transport>
52*4d7e907cSAndroid Build Coastguard Worker    <version>1.1</version>
53*4d7e907cSAndroid Build Coastguard Worker    <interface>
54*4d7e907cSAndroid Build Coastguard Worker        <name>ICryptoFactory</name>
55*4d7e907cSAndroid Build Coastguard Worker        <instance>clearkey</instance>
56*4d7e907cSAndroid Build Coastguard Worker        <instance>foo</instance>
57*4d7e907cSAndroid Build Coastguard Worker    </interface>
58*4d7e907cSAndroid Build Coastguard Worker    <interface>
59*4d7e907cSAndroid Build Coastguard Worker        <name>IDrmFactory</name>
60*4d7e907cSAndroid Build Coastguard Worker        <instance>clearkey</instance>
61*4d7e907cSAndroid Build Coastguard Worker        <instance>foo</instance>
62*4d7e907cSAndroid Build Coastguard Worker    </interface>
63*4d7e907cSAndroid Build Coastguard Worker    <fqname>@1.0::ICryptoFactory/default</fqname>
64*4d7e907cSAndroid Build Coastguard Worker    <fqname>@1.0::IDrmFactory/default</fqname>
65*4d7e907cSAndroid Build Coastguard Worker</hal>
66*4d7e907cSAndroid Build Coastguard Worker```
67*4d7e907cSAndroid Build Coastguard Worker
68*4d7e907cSAndroid Build Coastguard Worker## Devices launching with Android Pie
69*4d7e907cSAndroid Build Coastguard WorkerIf you have a new device launched with Android Pie (no OTA), both of the
70*4d7e907cSAndroid Build Coastguard Workeraforementioned snippets can be used. Besides, it is recommended to use the
71*4d7e907cSAndroid Build Coastguard Workernew, clearer format:
72*4d7e907cSAndroid Build Coastguard Worker
73*4d7e907cSAndroid Build Coastguard Worker```xml
74*4d7e907cSAndroid Build Coastguard Worker<hal format="hidl">
75*4d7e907cSAndroid Build Coastguard Worker    <name>android.hardware.drm</name>
76*4d7e907cSAndroid Build Coastguard Worker    <transport>hwbinder</transport>
77*4d7e907cSAndroid Build Coastguard Worker    <fqname>@1.0::ICryptoFactory/default</fqname>
78*4d7e907cSAndroid Build Coastguard Worker    <fqname>@1.0::IDrmFactory/default</fqname>
79*4d7e907cSAndroid Build Coastguard Worker    <fqname>@1.1::ICryptoFactory/clearkey</fqname>
80*4d7e907cSAndroid Build Coastguard Worker    <fqname>@1.1::IDrmFactory/clearkey</fqname>
81*4d7e907cSAndroid Build Coastguard Worker    <fqname>@1.1::ICryptoFactory/foo</fqname>
82*4d7e907cSAndroid Build Coastguard Worker    <fqname>@1.1::IDrmFactory/foo</fqname>
83*4d7e907cSAndroid Build Coastguard Worker</hal>
84*4d7e907cSAndroid Build Coastguard Worker```
85