Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Support generating Jasper Lake GPIO configuration from inteltool logs Change-Id: I519d27e0c91c8d9159224d9bc1c6e49c83270b7a Signed-off-by: Jonathon Hall <jonathon.hall@puri.sm> Reviewed-on: https://review.coreboot.org/c/coreboot/+/78093 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Maxim <max.senia.poliak@gmail.com>
- Loading branch information
1 parent
89aee53
commit 1af3e3c
Showing
5 changed files
with
152 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,119 @@ | ||
package jsl | ||
|
||
import ( | ||
"strings" | ||
"fmt" | ||
|
||
"review.coreboot.org/coreboot.git/util/intelp2m/platforms/common" | ||
"review.coreboot.org/coreboot.git/util/intelp2m/platforms/snr" | ||
"review.coreboot.org/coreboot.git/util/intelp2m/platforms/cnl" | ||
"review.coreboot.org/coreboot.git/util/intelp2m/config" | ||
"review.coreboot.org/coreboot.git/util/intelp2m/fields" | ||
) | ||
|
||
const ( | ||
PAD_CFG_DW0_RO_FIELDS = (0x1 << 27) | (0x1 << 18) | (0x3f << 11) | (0x3f << 2) | (0x1 << 1) | ||
PAD_CFG_DW1_RO_FIELDS = 0xdfffc3ff | ||
) | ||
|
||
const ( | ||
PAD_CFG_DW0 = common.PAD_CFG_DW0 | ||
PAD_CFG_DW1 = common.PAD_CFG_DW1 | ||
MAX_DW_NUM = common.MAX_DW_NUM | ||
) | ||
|
||
type InheritanceMacro interface { | ||
Pull() | ||
GpiMacroAdd() | ||
GpoMacroAdd() | ||
NativeFunctionMacroAdd() | ||
NoConnMacroAdd() | ||
} | ||
|
||
type PlatformSpecific struct { | ||
InheritanceMacro | ||
} | ||
|
||
// RemmapRstSrc - remmap Pad Reset Source Config | ||
func (PlatformSpecific) RemmapRstSrc() { | ||
macro := common.GetMacro() | ||
if config.TemplateGet() != config.TempInteltool { | ||
// Use reset source remapping only if the input file is inteltool.log dump | ||
return | ||
} | ||
if strings.Contains(macro.PadIdGet(), "GPP_F") || | ||
strings.Contains(macro.PadIdGet(), "GPP_B") || | ||
strings.Contains(macro.PadIdGet(), "GPP_A") || | ||
strings.Contains(macro.PadIdGet(), "GPP_S") || | ||
strings.Contains(macro.PadIdGet(), "GPP_R") { | ||
// See reset map for the Jasper Lake Community 0: | ||
// https://github.com/coreboot/coreboot/blob/master/src/soc/intel/jasperlake/gpio.c#L21 | ||
// remmap is not required because it is the same as common. | ||
return | ||
} | ||
|
||
dw0 := macro.Register(PAD_CFG_DW0) | ||
var remapping = map[uint8]uint32{ | ||
0: common.RST_RSMRST << common.PadRstCfgShift, | ||
1: common.RST_DEEP << common.PadRstCfgShift, | ||
2: common.RST_PLTRST << common.PadRstCfgShift, | ||
} | ||
resetsrc, valid := remapping[dw0.GetResetConfig()] | ||
if valid { | ||
// dw0.SetResetConfig(resetsrc) | ||
ResetConfigFieldVal := (dw0.ValueGet() & 0x3fffffff) | remapping[dw0.GetResetConfig()] | ||
dw0.ValueSet(ResetConfigFieldVal) | ||
} else { | ||
fmt.Println("Invalid Pad Reset Config [ 0x", resetsrc ," ] for ", macro.PadIdGet()) | ||
} | ||
dw0.CntrMaskFieldsClear(common.PadRstCfgMask) | ||
} | ||
|
||
// Adds The Pad Termination (TERM) parameter from PAD_CFG_DW1 to the macro | ||
// as a new argument | ||
func (platform PlatformSpecific) Pull() { | ||
platform.InheritanceMacro.Pull() | ||
} | ||
|
||
// Adds PAD_CFG_GPI macro with arguments | ||
func (platform PlatformSpecific) GpiMacroAdd() { | ||
platform.InheritanceMacro.GpiMacroAdd() | ||
} | ||
|
||
// Adds PAD_CFG_GPO macro with arguments | ||
func (platform PlatformSpecific) GpoMacroAdd() { | ||
platform.InheritanceMacro.GpoMacroAdd() | ||
} | ||
|
||
// Adds PAD_CFG_NF macro with arguments | ||
func (platform PlatformSpecific) NativeFunctionMacroAdd() { | ||
platform.InheritanceMacro.NativeFunctionMacroAdd() | ||
} | ||
|
||
// Adds PAD_NC macro | ||
func (platform PlatformSpecific) NoConnMacroAdd() { | ||
platform.InheritanceMacro.NoConnMacroAdd() | ||
} | ||
|
||
// GenMacro - generate pad macro | ||
// dw0 : DW0 config register value | ||
// dw1 : DW1 config register value | ||
// return: string of macro | ||
// error | ||
func (PlatformSpecific) GenMacro(id string, dw0 uint32, dw1 uint32, ownership uint8) string { | ||
macro := common.GetInstanceMacro( | ||
PlatformSpecific{ | ||
InheritanceMacro: cnl.PlatformSpecific{ | ||
InheritanceMacro: snr.PlatformSpecific{}, | ||
}, | ||
}, | ||
fields.InterfaceGet(), | ||
) | ||
macro.Clear() | ||
macro.Register(PAD_CFG_DW0).CntrMaskFieldsClear(common.AllFields) | ||
macro.Register(PAD_CFG_DW1).CntrMaskFieldsClear(common.AllFields) | ||
macro.PadIdSet(id).SetPadOwnership(ownership) | ||
macro.Register(PAD_CFG_DW0).ValueSet(dw0).ReadOnlyFieldsSet(PAD_CFG_DW0_RO_FIELDS) | ||
macro.Register(PAD_CFG_DW1).ValueSet(dw1).ReadOnlyFieldsSet(PAD_CFG_DW1_RO_FIELDS) | ||
return macro.Generate() | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
package jsl | ||
|
||
import "review.coreboot.org/coreboot.git/util/intelp2m/platforms/common" | ||
|
||
// GroupNameExtract - This function extracts the group ID, if it exists in a row | ||
// line : string from the configuration file | ||
// return | ||
// bool : true if the string contains a group identifier | ||
// string : group identifier | ||
func (PlatformSpecific) GroupNameExtract(line string) (bool, string) { | ||
return common.KeywordsCheck(line, | ||
"GPP_A", "GPP_B", "GPP_C", "GPP_D", "GPP_E", "GPP_F", "GPP_G", | ||
"GPP_H", "GPP_R", "GPP_S", "GPP_T", "GPD", "HVMOS", "VGPIO5") | ||
|
||
} | ||
|
||
// KeywordCheck - This function is used to filter parsed lines of the configuration file and | ||
// returns true if the keyword is contained in the line. | ||
// line : string from the configuration file | ||
func (PlatformSpecific) KeywordCheck(line string) bool { | ||
isIncluded, _ := common.KeywordsCheck(line, "GPP_", "GPD", "VGPIO") | ||
return isIncluded | ||
} |