blob: 5ef23bfc7cec7b4033baa536ccaffaba4565bd3f [file] [log] [blame]
Andrew Lambe04a1ae2020-04-07 17:37:30 -06001"""Functions related to program configs.
2
3See proto definitions for descriptions of arguments.
4"""
5
Andrew Lamb35013072020-05-04 11:05:48 -06006# Needed to load from @proto. Add @unused to silence lint.
David Burger9a351442020-02-13 21:31:47 -07007load("//config/util/bindings/proto.star", "protos")
Prathmesh Prabhu72f8a002020-04-10 09:57:53 -07008load(
9 "@proto//chromiumos/config/api/program.proto",
10 program_pb = "chromiumos.config.api",
11)
12load(
13 "@proto//chromiumos/config/api/program_id.proto",
14 program_id_pb = "chromiumos.config.api",
15)
16load(
C Shapiroadefd7c2020-05-19 16:37:21 -050017 "@proto//chromiumos/config/api/design_id.proto",
18 design_id_pb = "chromiumos.config.api",
19)
20load(
Prathmesh Prabhu72f8a002020-04-10 09:57:53 -070021 "@proto//chromiumos/config/api/device_brand_id.proto",
22 db_id_pb = "chromiumos.config.api",
23)
David Burger32589c52020-04-08 07:11:06 -060024load("//config/util/generate.star", "generate")
Andrew Lamb96e4be72020-08-25 10:49:33 -060025load("//config/util/public_replication.star", "public_replication")
David Burger32589c52020-04-08 07:11:06 -060026
Andrew Lamba6aec9d2020-03-03 15:02:01 -070027def _create_firmware_configuration_segment(name, mask):
Andrew Lambe04a1ae2020-04-07 17:37:30 -060028 """Builds a FirmwareConfigurationSegment proto."""
Andrew Lamba6aec9d2020-03-03 15:02:01 -070029 return program_pb.FirmwareConfigurationSegment(
30 name = name,
31 mask = mask,
32 )
C Shapiroe4657e32020-01-24 13:32:11 -060033
Andrew Lamb1e18a6f2020-04-29 14:19:55 -060034def _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 Shapiroadefd7c2020-05-19 16:37:21 -050042# TODO(shapiroc): Migrate clients, make this private, and fix param order
43def _create_signer_config(device_brand_id, key_id, design_id = None):
C Shapirodc88af12020-04-14 09:23:49 -050044 """Builds a DeviceSignerConfig proto."""
C Shapiroadefd7c2020-05-19 16:37:21 -050045 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
56def _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
59def _create_signer_configs_by_brand(configs):
60 return [_create_signer_config_by_brand(id, key) for id, key in configs.items()]
61
62def _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
65def _create_signer_configs_by_design(configs):
66 return [_create_signer_config_by_design(id, key) for id, key in configs.items()]
C Shapirodc88af12020-04-14 09:23:49 -050067
Sean McAllister284527c2021-04-20 13:02:58 -060068def _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 Prabhu72f8a002020-04-10 09:57:53 -070077def _create(
78 name,
Andrew Lamb26800922020-09-28 11:03:48 -060079 public_fields = ["name", "id"],
Prathmesh Prabhu72f8a002020-04-10 09:57:53 -070080 component_quals = None,
81 constraints = None,
82 firmware_configuration_segments = None,
Peter Marheine81efa192021-01-29 14:42:29 +110083 ssfc_segments = None,
Andrew Lamb1e18a6f2020-04-29 14:19:55 -060084 design_config_id_segments = None,
Sean McAllister0b757772020-11-13 12:22:36 -070085 device_signer_configs = None,
Sean McAllister284527c2021-04-20 13:02:58 -060086 mosys_platform_name = None,
87 platform = None):
Andrew Lambe04a1ae2020-04-07 17:37:30 -060088 """Builds a Program proto."""
Andrew Lamba6aec9d2020-03-03 15:02:01 -070089 program_id = program_id_pb.ProgramId(value = name)
90 return program_pb.Program(
Andrew Lamb96e4be72020-08-25 10:49:33 -060091 public_replication = public_replication.create(public_fields = public_fields),
Prathmesh Prabhu72f8a002020-04-10 09:57:53 -070092 id = program_id,
93 name = name,
94 component_quals = component_quals,
95 design_config_constraints = constraints,
96 firmware_configuration_segments = firmware_configuration_segments,
Peter Marheine81efa192021-01-29 14:42:29 +110097 ssfc_segments = ssfc_segments,
Andrew Lamb1e18a6f2020-04-29 14:19:55 -060098 design_config_id_segments = design_config_id_segments,
Prathmesh Prabhu72f8a002020-04-10 09:57:53 -070099 device_signer_configs = device_signer_configs,
Sean McAllister0b757772020-11-13 12:22:36 -0700100 mosys_platform_name = mosys_platform_name,
Sean McAllister284527c2021-04-20 13:02:58 -0600101 platform = platform,
Andrew Lamba6aec9d2020-03-03 15:02:01 -0700102 )
C Shapiroe4657e32020-01-24 13:32:11 -0600103
C Shapiroe4657e32020-01-24 13:32:11 -0600104program = struct(
105 create = _create,
Sean McAllister284527c2021-04-20 13:02:58 -0600106 create_platform = _create_platform,
Andrew Lamba6aec9d2020-03-03 15:02:01 -0700107 create_firmware_configuration_segment = _create_firmware_configuration_segment,
Andrew Lamb1e18a6f2020-04-29 14:19:55 -0600108 create_design_config_id_segment = _create_design_config_id_segment,
C Shapirodc88af12020-04-14 09:23:49 -0500109 create_signer_config = _create_signer_config,
C Shapiroadefd7c2020-05-19 16:37:21 -0500110 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 Burger32a86132020-03-09 15:02:31 -0600114 generate = generate.generate,
Sean McAllister284527c2021-04-20 13:02:58 -0600115 platform = program_pb.Program.Platform,
David Burger9a351442020-02-13 21:31:47 -0700116)