Andrew Lamb | e04a1ae | 2020-04-07 17:37:30 -0600 | [diff] [blame] | 1 | """Functions related to program configs. |
| 2 | |
| 3 | See proto definitions for descriptions of arguments. |
| 4 | """ |
| 5 | |
Andrew Lamb | 3501307 | 2020-05-04 11:05:48 -0600 | [diff] [blame] | 6 | # Needed to load from @proto. Add @unused to silence lint. |
David Burger | 9a35144 | 2020-02-13 21:31:47 -0700 | [diff] [blame] | 7 | load("//config/util/bindings/proto.star", "protos") |
Prathmesh Prabhu | 72f8a00 | 2020-04-10 09:57:53 -0700 | [diff] [blame] | 8 | load( |
| 9 | "@proto//chromiumos/config/api/program.proto", |
| 10 | program_pb = "chromiumos.config.api", |
| 11 | ) |
| 12 | load( |
| 13 | "@proto//chromiumos/config/api/program_id.proto", |
| 14 | program_id_pb = "chromiumos.config.api", |
| 15 | ) |
| 16 | load( |
C Shapiro | adefd7c | 2020-05-19 16:37:21 -0500 | [diff] [blame] | 17 | "@proto//chromiumos/config/api/design_id.proto", |
| 18 | design_id_pb = "chromiumos.config.api", |
| 19 | ) |
| 20 | load( |
Prathmesh Prabhu | 72f8a00 | 2020-04-10 09:57:53 -0700 | [diff] [blame] | 21 | "@proto//chromiumos/config/api/device_brand_id.proto", |
| 22 | db_id_pb = "chromiumos.config.api", |
| 23 | ) |
David Burger | 32589c5 | 2020-04-08 07:11:06 -0600 | [diff] [blame] | 24 | load("//config/util/generate.star", "generate") |
Andrew Lamb | 96e4be7 | 2020-08-25 10:49:33 -0600 | [diff] [blame] | 25 | load("//config/util/public_replication.star", "public_replication") |
David Burger | 32589c5 | 2020-04-08 07:11:06 -0600 | [diff] [blame] | 26 | |
Andrew Lamb | a6aec9d | 2020-03-03 15:02:01 -0700 | [diff] [blame] | 27 | def _create_firmware_configuration_segment(name, mask): |
Andrew Lamb | e04a1ae | 2020-04-07 17:37:30 -0600 | [diff] [blame] | 28 | """Builds a FirmwareConfigurationSegment proto.""" |
Andrew Lamb | a6aec9d | 2020-03-03 15:02:01 -0700 | [diff] [blame] | 29 | return program_pb.FirmwareConfigurationSegment( |
| 30 | name = name, |
| 31 | mask = mask, |
| 32 | ) |
C Shapiro | e4657e3 | 2020-01-24 13:32:11 -0600 | [diff] [blame] | 33 | |
Andrew Lamb | 1e18a6f | 2020-04-29 14:19:55 -0600 | [diff] [blame] | 34 | def _create_design_config_id_segment(design_id, min_id, max_id): |
| 35 | """Builds a DesignConfigIdSegment proto.""" |
| 36 | return program_pb.DesignConfigIdSegment( |
| 37 | design_id = design_id, |
| 38 | min_id = min_id, |
| 39 | max_id = max_id, |
| 40 | ) |
| 41 | |
C Shapiro | adefd7c | 2020-05-19 16:37:21 -0500 | [diff] [blame] | 42 | # TODO(shapiroc): Migrate clients, make this private, and fix param order |
| 43 | def _create_signer_config(device_brand_id, key_id, design_id = None): |
C Shapiro | dc88af1 | 2020-04-14 09:23:49 -0500 | [diff] [blame] | 44 | """Builds a DeviceSignerConfig proto.""" |
C Shapiro | adefd7c | 2020-05-19 16:37:21 -0500 | [diff] [blame] | 45 | if design_id: |
| 46 | return program_pb.DeviceSignerConfig( |
| 47 | design_id = design_id_pb.DesignId(value = design_id), |
| 48 | key_id = key_id, |
| 49 | ) |
| 50 | else: |
| 51 | return program_pb.DeviceSignerConfig( |
| 52 | brand_id = db_id_pb.DeviceBrandId(value = device_brand_id), |
| 53 | key_id = key_id, |
| 54 | ) |
| 55 | |
| 56 | def _create_signer_config_by_brand(device_brand_id, key_id): |
| 57 | return _create_signer_config(device_brand_id = device_brand_id, key_id = key_id) |
| 58 | |
| 59 | def _create_signer_configs_by_brand(configs): |
| 60 | return [_create_signer_config_by_brand(id, key) for id, key in configs.items()] |
| 61 | |
| 62 | def _create_signer_config_by_design(design_id, key_id): |
| 63 | return _create_signer_config(design_id = design_id, key_id = key_id, device_brand_id = None) |
| 64 | |
| 65 | def _create_signer_configs_by_design(configs): |
| 66 | return [_create_signer_config_by_design(id, key) for id, key in configs.items()] |
C Shapiro | dc88af1 | 2020-04-14 09:23:49 -0500 | [diff] [blame] | 67 | |
Sean McAllister | 284527c | 2021-04-20 13:02:58 -0600 | [diff] [blame] | 68 | def _create_platform(soc_family, soc_arch, gpu_family = None, graphics_apis = [], video_codecs = []): |
| 69 | return program_pb.Program.Platform( |
| 70 | soc_family = soc_family, |
| 71 | soc_arch = soc_arch, |
| 72 | gpu_family = gpu_family, |
| 73 | graphics_apis = graphics_apis, |
| 74 | video_codecs = video_codecs, |
| 75 | ) |
| 76 | |
Prathmesh Prabhu | 72f8a00 | 2020-04-10 09:57:53 -0700 | [diff] [blame] | 77 | def _create( |
| 78 | name, |
Andrew Lamb | 2680092 | 2020-09-28 11:03:48 -0600 | [diff] [blame] | 79 | public_fields = ["name", "id"], |
Prathmesh Prabhu | 72f8a00 | 2020-04-10 09:57:53 -0700 | [diff] [blame] | 80 | component_quals = None, |
| 81 | constraints = None, |
| 82 | firmware_configuration_segments = None, |
Peter Marheine | 81efa19 | 2021-01-29 14:42:29 +1100 | [diff] [blame] | 83 | ssfc_segments = None, |
Andrew Lamb | 1e18a6f | 2020-04-29 14:19:55 -0600 | [diff] [blame] | 84 | design_config_id_segments = None, |
Sean McAllister | 0b75777 | 2020-11-13 12:22:36 -0700 | [diff] [blame] | 85 | device_signer_configs = None, |
Sean McAllister | 284527c | 2021-04-20 13:02:58 -0600 | [diff] [blame] | 86 | mosys_platform_name = None, |
| 87 | platform = None): |
Andrew Lamb | e04a1ae | 2020-04-07 17:37:30 -0600 | [diff] [blame] | 88 | """Builds a Program proto.""" |
Andrew Lamb | a6aec9d | 2020-03-03 15:02:01 -0700 | [diff] [blame] | 89 | program_id = program_id_pb.ProgramId(value = name) |
| 90 | return program_pb.Program( |
Andrew Lamb | 96e4be7 | 2020-08-25 10:49:33 -0600 | [diff] [blame] | 91 | public_replication = public_replication.create(public_fields = public_fields), |
Prathmesh Prabhu | 72f8a00 | 2020-04-10 09:57:53 -0700 | [diff] [blame] | 92 | id = program_id, |
| 93 | name = name, |
| 94 | component_quals = component_quals, |
| 95 | design_config_constraints = constraints, |
| 96 | firmware_configuration_segments = firmware_configuration_segments, |
Peter Marheine | 81efa19 | 2021-01-29 14:42:29 +1100 | [diff] [blame] | 97 | ssfc_segments = ssfc_segments, |
Andrew Lamb | 1e18a6f | 2020-04-29 14:19:55 -0600 | [diff] [blame] | 98 | design_config_id_segments = design_config_id_segments, |
Prathmesh Prabhu | 72f8a00 | 2020-04-10 09:57:53 -0700 | [diff] [blame] | 99 | device_signer_configs = device_signer_configs, |
Sean McAllister | 0b75777 | 2020-11-13 12:22:36 -0700 | [diff] [blame] | 100 | mosys_platform_name = mosys_platform_name, |
Sean McAllister | 284527c | 2021-04-20 13:02:58 -0600 | [diff] [blame] | 101 | platform = platform, |
Andrew Lamb | a6aec9d | 2020-03-03 15:02:01 -0700 | [diff] [blame] | 102 | ) |
C Shapiro | e4657e3 | 2020-01-24 13:32:11 -0600 | [diff] [blame] | 103 | |
C Shapiro | e4657e3 | 2020-01-24 13:32:11 -0600 | [diff] [blame] | 104 | program = struct( |
| 105 | create = _create, |
Sean McAllister | 284527c | 2021-04-20 13:02:58 -0600 | [diff] [blame] | 106 | create_platform = _create_platform, |
Andrew Lamb | a6aec9d | 2020-03-03 15:02:01 -0700 | [diff] [blame] | 107 | create_firmware_configuration_segment = _create_firmware_configuration_segment, |
Andrew Lamb | 1e18a6f | 2020-04-29 14:19:55 -0600 | [diff] [blame] | 108 | create_design_config_id_segment = _create_design_config_id_segment, |
C Shapiro | dc88af1 | 2020-04-14 09:23:49 -0500 | [diff] [blame] | 109 | create_signer_config = _create_signer_config, |
C Shapiro | adefd7c | 2020-05-19 16:37:21 -0500 | [diff] [blame] | 110 | create_signer_config_by_brand = _create_signer_config_by_brand, |
| 111 | create_signer_configs_by_brand = _create_signer_configs_by_brand, |
| 112 | create_signer_config_by_design = _create_signer_config_by_design, |
| 113 | create_signer_configs_by_design = _create_signer_configs_by_design, |
David Burger | 32a8613 | 2020-03-09 15:02:31 -0600 | [diff] [blame] | 114 | generate = generate.generate, |
Sean McAllister | 284527c | 2021-04-20 13:02:58 -0600 | [diff] [blame] | 115 | platform = program_pb.Program.Platform, |
David Burger | 9a35144 | 2020-02-13 21:31:47 -0700 | [diff] [blame] | 116 | ) |