Add prebuilt_rfsa module type
Add a prebuilt_rfsa module type that can install firmware files to
vendor/lib/rfsa.
Bug: 181289338
Test: TestPrebuiltRFSADirPath
Change-Id: I9dcf6a2188e60f361673bf876a52e985ab709d2e
diff --git a/etc/prebuilt_etc.go b/etc/prebuilt_etc.go
index 6291325..6d0ee6f 100644
--- a/etc/prebuilt_etc.go
+++ b/etc/prebuilt_etc.go
@@ -52,6 +52,7 @@
ctx.RegisterModuleType("prebuilt_font", PrebuiltFontFactory)
ctx.RegisterModuleType("prebuilt_firmware", PrebuiltFirmwareFactory)
ctx.RegisterModuleType("prebuilt_dsp", PrebuiltDSPFactory)
+ ctx.RegisterModuleType("prebuilt_rfsa", PrebuiltRFSAFactory)
}
var PrepareForTestWithPrebuiltEtc = android.FixtureRegisterWithContext(RegisterPrebuiltEtcBuildComponents)
@@ -405,3 +406,16 @@
android.InitAndroidArchModule(module, android.DeviceSupported, android.MultilibFirst)
return module
}
+
+// prebuilt_rfsa installs a firmware file that will be available through Qualcomm's RFSA
+// to the <partition>/lib/rfsa directory.
+func PrebuiltRFSAFactory() android.Module {
+ module := &PrebuiltEtc{}
+ // Ideally these would go in /vendor/dsp, but the /vendor/lib/rfsa paths are hardcoded in too
+ // many places outside of the application processor. They could be moved to /vendor/dsp once
+ // that is cleaned up.
+ InitPrebuiltEtcModule(module, "lib/rfsa")
+ // This module is device-only
+ android.InitAndroidArchModule(module, android.DeviceSupported, android.MultilibFirst)
+ return module
+}
diff --git a/etc/prebuilt_etc_test.go b/etc/prebuilt_etc_test.go
index 9c3db3b..c302f7a 100644
--- a/etc/prebuilt_etc_test.go
+++ b/etc/prebuilt_etc_test.go
@@ -288,3 +288,37 @@
})
}
}
+
+func TestPrebuiltRFSADirPath(t *testing.T) {
+ targetPath := "out/soong/target/product/test_device"
+ tests := []struct {
+ description string
+ config string
+ expectedPath string
+ }{{
+ description: "prebuilt: system rfsa",
+ config: `
+ prebuilt_rfsa {
+ name: "foo.conf",
+ src: "foo.conf",
+ }`,
+ expectedPath: filepath.Join(targetPath, "system/lib/rfsa"),
+ }, {
+ description: "prebuilt: vendor rfsa",
+ config: `
+ prebuilt_rfsa {
+ name: "foo.conf",
+ src: "foo.conf",
+ soc_specific: true,
+ sub_dir: "sub_dir",
+ }`,
+ expectedPath: filepath.Join(targetPath, "vendor/lib/rfsa/sub_dir"),
+ }}
+ for _, tt := range tests {
+ t.Run(tt.description, func(t *testing.T) {
+ result := prepareForPrebuiltEtcTest.RunTestWithBp(t, tt.config)
+ p := result.Module("foo.conf", "android_arm64_armv8-a").(*PrebuiltEtc)
+ android.AssertPathRelativeToTopEquals(t, "install dir", tt.expectedPath, p.installDirPath)
+ })
+ }
+}