vendorcode/google/chromeos: Add API for Chromebook Plus check
This patch implements an API which relies on the
chromeos_get_factory_config() function to retrieve the factory
config value.
This information is useful to determine whether a ChromeOS device
is branded as a Chromebook Plus based on specific bit flags:
   - Bit 4 (0x10): Indicates whether the device chassis has the
                  "chromebook-plus" branding.
   - Bits 3-0 (0x1): Must be 0x1 to signify compliance with
		   Chromebook Plus hardware specifications.
BUG=b:317880956
TEST=Able to verify that google/screebo is branded as
Chromebook Plus.
Change-Id: Iebaed1c60e34af4cc36316f1f87a89df778b0857
Signed-off-by: Subrata Banik <subratabanik@google.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/79763
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Kapil Porwal <kapilporwal@google.com>
			
			
This commit is contained in:
		@@ -32,6 +32,18 @@ void chromeos_set_ramoops(void *ram_oops, size_t size);
 | 
				
			|||||||
 * Return `-1` in case of error.
 | 
					 * Return `-1` in case of error.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
int64_t chromeos_get_factory_config(void);
 | 
					int64_t chromeos_get_factory_config(void);
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Determines whether a ChromeOS device is branded as a Chromebook Plus
 | 
				
			||||||
 | 
					 * based on specific bit flags:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * - Bit 4 (0x10): Indicates whether the device chassis has the
 | 
				
			||||||
 | 
					 *                 "chromebook-plus" branding.
 | 
				
			||||||
 | 
					 * - Bits 3-0 (0x1): Must be 0x1 to signify compliance with Chromebook Plus
 | 
				
			||||||
 | 
					 *                   hardware specifications.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * To be considered a Chromebook Plus, either of these conditions needs to be met.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					bool chromeos_device_branded_plus(void);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Declaration for mainboards to use to generate ACPI-specific ChromeOS needs.
 | 
					 * Declaration for mainboards to use to generate ACPI-specific ChromeOS needs.
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,8 +2,13 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#include <console/console.h>
 | 
					#include <console/console.h>
 | 
				
			||||||
#include <security/tpm/tss.h>
 | 
					#include <security/tpm/tss.h>
 | 
				
			||||||
 | 
					#include <types.h>
 | 
				
			||||||
#include <vendorcode/google/chromeos/chromeos.h>
 | 
					#include <vendorcode/google/chromeos/chromeos.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define CHROMEBOOK_PLUS_HARD_BRANDED BIT(4)
 | 
				
			||||||
 | 
					#define CHROMEBOOK_PLUS_SOFT_BRANDED BIT(0)
 | 
				
			||||||
 | 
					#define CHROMEBOOK_PLUS_DEVICE (CHROMEBOOK_PLUS_HARD_BRANDED | CHROMEBOOK_PLUS_SOFT_BRANDED)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int64_t chromeos_get_factory_config(void)
 | 
					int64_t chromeos_get_factory_config(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	static int64_t factory_config = -1;
 | 
						static int64_t factory_config = -1;
 | 
				
			||||||
@@ -29,3 +34,24 @@ int64_t chromeos_get_factory_config(void)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	return factory_config;
 | 
						return factory_config;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Determines whether a ChromeOS device is branded as a Chromebook Plus
 | 
				
			||||||
 | 
					 * based on specific bit flags:
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * - Bit 4 (0x10): Indicates whether the device chassis has the
 | 
				
			||||||
 | 
					 *                 "chromebook-plus" branding.
 | 
				
			||||||
 | 
					 * - Bits 3-0 (0x1): Must be 0x1 to signify compliance with Chromebook Plus
 | 
				
			||||||
 | 
					 *                   hardware specifications.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * To be considered a Chromebook Plus, either of these conditions needs to be met.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					bool chromeos_device_branded_plus(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						int64_t factory_config = chromeos_get_factory_config();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (factory_config < 0)
 | 
				
			||||||
 | 
							return false;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						return factory_config & CHROMEBOOK_PLUS_DEVICE;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user