# US 12,117,951 B2 · Operation method of a software program meeting specifications of unified extensible firmware interface for configuring a general-purpose input/output port

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 12,117,951 B2
- Document ID: US12117951B2
- Status: Granted
- Kind: B2
- Application number: 18/146,539
- Filed: 2022-12-27
- Published: 2023-06-29
- Granted: 2024-10-15
- Earliest claimed: 2021-12-29
- Assignees: Jabil Circuit (Singapore) Pte. Ltd.
- Applicants: Jabil Circuit (Singapore) Pte. Ltd.
- Inventors: Hung-An Chen; Ching-Yuan Wu; Shuo-Hung Hsu
- Web page: https://patentgrep.com/patent/US12117951B2

## CPC

- G06F 13/385: {for adaptation of a particular data processing system to different peripheral devices}
- G06F 9/4401: Bootstrapping (security arrangements therefor G06F21/57)
- G06F 9/4411: {Configuring for operating with peripheral devices; Loading of device drivers}
- G06F 15/177: Initialisation or configuration control {(processor initialisation G06F9/4405)}
- G06F 21/572: {Secure firmware programming, e.g. of basic input output system [BIOS]}
- G06F 21/575: {Secure boot}
- G06F 2221/034: Test or assess a computer or a system
- Y02D 10/00: Energy efficient computing, e.g. low power processors, power management or thermal management
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- Y02D: CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE

## Abstract

An operation method of a software program meeting UEFI specifications for configuring a GPIO port is provided. The operation method includes: operating in a command-line mode to display, on a display device, a first prompt for guiding a user to input a string of command-line arguments; in response to receipt of a string of command-line arguments for reading content stored in a register that corresponds to one of GPIO pins of the GPIO port under the command-line mode, displaying, on the display device, a default value of the register that corresponds to a function of said one of the GPIO pins; and in response to receipt of a string of command-line arguments for setting a register that corresponds to one of the GPIO pins to a set value under the command-line mode, writing the set value to the register to replace a current value with the set value.

## Claims

### Claim 1

An operation method of a software program meeting specifications of Unified Extensible Firmware Interface (UEFI) for configuring a general-purpose input/output (GPIO) port of a server system, the software program being installed in the server system that includes a display device, the GPIO port including a plurality of GPIO pins, the operation method comprising steps of:
the software program operating in a command-line mode to display, on the display device, a first prompt for guiding a user to input a string of command-line arguments;
in response to receipt of a string of command-line arguments for reading content stored in a register that corresponds to one of the GPIO pins under the command-line mode, the software program displaying, on the display device, a default value of the register, wherein the default value corresponds to a function of said one of the GPIO pins; and
in response to receipt of a string of command-line arguments for setting a register that corresponds to one of the GPIO pins to a set value under the command-line mode, the software program writing the set value to the register to replace a current value with the set value.

### Claim 2 (depends on 1)

The operation method as claimed in claim 1, the GPIO pins being divided into a plurality of GPIO groups, the operation method further comprising steps of:
in response to receipt of a string of command-line arguments for reading content stored in registers that correspond to all of the GPIO groups under the command-line mode, the software program displaying, on the display device, an information abstract related to the GPIO groups; and
in response to receipt of a string of command-line arguments for reading content stored in registers that corresponds to one of the GPIO groups under the command-line mode, the software program displaying, on the display device, an information abstract related to said one of the GPIO groups.

### Claim 3 (depends on 1)

The operation method as claimed in claim 1, further comprising a step of:
the software program operating in an interactive mode to display, on the display device, a plurality of second prompts for guiding the user to input command-line arguments interactively.

### Claim 4 (depends on 3)

The operation method as claimed in claim 3, further comprising steps of:
in response to receipt of a command-line argument for reading content stored in a register that corresponds to one of the GPIO pins under the interactive mode, the software program displaying, on the display device, a default value of the register, wherein the default value corresponds to a function of said one of the GPIO pins; and
in response to receipt of command-line arguments for setting a register that corresponds to one of the GPIO pins to a set value under the interactive mode, the software program performing a writing operation on the register to replace a current value with the set value in a volatile manner.

### Claim 5 (depends on 4)

The operation method as claimed in claim 4, wherein the step of the software program performing a writing operation on the register to replace a current value with the set value in a volatile manner includes:
executing a reading function to obtain the current value of the register, the register including a plurality of bits;
determining one of the bits of the register, a value of which is to be set, according to the command-line arguments;
determining a target bit value that is to be written into said one of the bits according to the command-line arguments; and
executing a writing function to write the target bit value to said one of the bits, so as to replace the current value of the register with the set value, which is the current value of the register with the value of said one of the bits having been changed to the target bit value.

### Claim 6 (depends on 5)

The operation method as claimed in claim 5, wherein the step of the software program performing a writing operation on the register to replace a current value with the set value in a volatile manner further includes: executing the reading function to obtain a new value of the register.

### Claim 7 (depends on 1)

The operation method as claimed in claim 1, further comprising a step of:
in response to receipt of a command-line argument for showing functions that correspond respectively to a plurality of different arguments, the software program displaying, on the display device, the functions that correspond respectively to the plurality of different arguments.

### Claim 8 (depends on 1)

The operation method as claimed in claim 1, wherein the step of the software program displaying a default value of the register includes sub-steps of:
obtaining an identification code of said one of the GPIO pins from the string of command-line arguments;
obtaining an address of the register that corresponds to said one of the GPIO pins based on the identification code and an address-calculating function;
obtaining the default value of the register according to the address; and
displaying the default value on the display device.

### Claim 9 (depends on 8)

The operation method as claimed in claim 8, the server system further including a platform controller hub (PCH) that is electrically connected to the GPIO port, the GPIO pins being divided into a plurality of GPIO groups and being grouped into a plurality of communities, each of the communities consisting of at least one of the GPIO groups, wherein the sub-step of obtaining the default value of the register is to execute a function for reading a 32-bit MMIO register, and the function is expressed as:
MmioRead32(PCH_PCR_BASE_ADDRESS+((Target port ID of community<<16)+Offset),
where “PCH_PCR_BASE_ADDRESS” is a base address of the PCH, “Target port ID of community” is an identification code of one of the communities that includes said one of the GPIO pins, and “Offset” is an offset value of the register.

### Claim 10 (depends on 1)

The operation method as claimed in claim 1, further comprising steps of:
the software program receiving a user input that indicates one of a first logic value and a second logic value under the command-line mode, the first logic value indicating preservation of values respectively of registers that correspond to the GPIO pins, the second logic value indicating initialization of the values of the registers; and
in response to receipt of the user input that indicates the first logic value, the software program setting a setting-preserving parameter to the first logic value, making a basic input/output system (BIOS) of the server system not implement initialization on the values of the registers during booting of the server system.

### Claim 11 (depends on 1)

The operation method as claimed in claim 1, the server system further including a processor and a platform controller hub (PCH), the operation method further comprising steps of:
when the server system boots, the processor loading a shell of the software program;
the processor determining whether a current version of the shell is loaded successfully;
when the current version of the shell is loaded successfully, the processor executing the shell to read an identification code of the PCH and determining a model of the PCH according to the identification code of the PCH;
the processor obtaining a register table that corresponds to the model of the PCH and that includes, for each of the GPIO pins, a default value of a register that corresponds to the GPIO pin; and
in response to receipt of any command-line argument, the software program operating in the command-line mode.
