diff --git a/android/config.go b/android/config.go
index 8c4b5cd..1ed6871 100644
--- a/android/config.go
+++ b/android/config.go
@@ -2250,3 +2250,11 @@
 func (c *config) SystemExtManifestFiles() []string {
 	return c.productVariables.SystemExtManifestFiles
 }
+
+func (c *config) DeviceManifestFiles() []string {
+	return c.productVariables.DeviceManifestFiles
+}
+
+func (c *config) OdmManifestFiles() []string {
+	return c.productVariables.OdmManifestFiles
+}
diff --git a/android/variable.go b/android/variable.go
index 548a762..1fc2f79 100644
--- a/android/variable.go
+++ b/android/variable.go
@@ -540,6 +540,8 @@
 	ProductManifestFiles   []string `json:",omitempty"`
 	SystemManifestFile     []string `json:",omitempty"`
 	SystemExtManifestFiles []string `json:",omitempty"`
+	DeviceManifestFiles    []string `json:",omitempty"`
+	OdmManifestFiles       []string `json:",omitempty"`
 }
 
 type PartitionQualifiedVariablesType struct {
diff --git a/android/vintf_data.go b/android/vintf_data.go
index cd5f096..7823397 100644
--- a/android/vintf_data.go
+++ b/android/vintf_data.go
@@ -26,6 +26,8 @@
 	systemManifestType    = "system_manifest"
 	productManifestType   = "product_manifest"
 	systemExtManifestType = "system_ext_manifest"
+	vendorManifestType    = "vendor_manifest"
+	odmManifestType       = "odm_manifest"
 
 	defaultDcm               = "system/libhidl/vintfdata/device_compatibility_matrix.default.xml"
 	defaultSystemManifest    = "system/libhidl/vintfdata/manifest.xml"
@@ -111,6 +113,27 @@
 		if len(systemExtManifestFiles) > 0 {
 			inputPaths = append(inputPaths, systemExtManifestFiles...)
 		}
+	case vendorManifestType:
+		assembleVintfEnvs = append(assembleVintfEnvs, fmt.Sprintf("BOARD_SEPOLICY_VERS=\"%s\"", ctx.DeviceConfig().BoardSepolicyVers()))
+		assembleVintfEnvs = append(assembleVintfEnvs, fmt.Sprintf("PRODUCT_ENFORCE_VINTF_MANIFEST=%t", *ctx.Config().productVariables.Enforce_vintf_manifest))
+		deviceManifestFiles := PathsForSource(ctx, ctx.Config().DeviceManifestFiles())
+		// Only need to generate the manifest if DEVICE_MANIFEST_FILE is defined.
+		if len(deviceManifestFiles) == 0 {
+			m.noAction = true
+			return
+		}
+
+		inputPaths = append(inputPaths, deviceManifestFiles...)
+	case odmManifestType:
+		assembleVintfEnvs = append(assembleVintfEnvs, "VINTF_IGNORE_TARGET_FCM_VERSION=true")
+		odmManifestFiles := PathsForSource(ctx, ctx.Config().OdmManifestFiles())
+		// Only need to generate the manifest if ODM_MANIFEST_FILES is defined.
+		if len(odmManifestFiles) == 0 {
+			m.noAction = true
+			return
+		}
+
+		inputPaths = append(inputPaths, odmManifestFiles...)
 	default:
 		panic(fmt.Errorf("For %s: The attribute 'type' value only allowed device_cm, system_manifest, product_manifest, system_ext_manifest!", ctx.Module().Name()))
 	}
