drivers/intel/fsp2.0: Add semantic patch for FspUpdVpd.h header
Previous FSP implementations in coreboot have included FspUpdVpd.h directly, along with with efi headers. Instead of taking that approach in FSP 2.0, we provide a semantic patch that, with minimal modifications, makes FspUpdVpd.h easier to include in coreboot, and eliminates reliance on external headers and definitions. Change-Id: I0c2a6f7baf6fb50ae22b64e08e653cfe1aefdaf9 Signed-off-by: Alexandru Gagniuc <alexandrux.gagniuc@intel.com> Reviewed-on: https://review.coreboot.org/13331 Tested-by: build bot (Jenkins) Reviewed-by: Aaron Durbin <adurbin@chromium.org>
This commit is contained in:
parent
0f61da8582
commit
6a587343a9
|
@ -0,0 +1,187 @@
|
||||||
|
/*
|
||||||
|
* Semantic patch for fspupdvpd_sanitize.sh. Please call the script directly.
|
||||||
|
*
|
||||||
|
* This file is part of the coreboot project.
|
||||||
|
*
|
||||||
|
* Copyright (C) 2015 Intel Corp.
|
||||||
|
* (Written by Alexandru Gagniuc <alexandrux.gagniuc@intel.com> for Intel Corp.)
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This semantic patch is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
@ kill_pragma_pack @
|
||||||
|
@@
|
||||||
|
- #pragma pack(...)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Convert named typedef'd structs
|
||||||
|
* Example : typedef struct name {} name_t; -> struct name {};
|
||||||
|
*/
|
||||||
|
@ named_struct @
|
||||||
|
identifier i;
|
||||||
|
type t;
|
||||||
|
@@
|
||||||
|
typedef struct i { ... } t;
|
||||||
|
|
||||||
|
/* Make typename usable as identifier */
|
||||||
|
@ script:python named_struct_type @
|
||||||
|
t << named_struct.t;
|
||||||
|
i;
|
||||||
|
@@
|
||||||
|
coccinelle.i = t.rstrip('_t')
|
||||||
|
|
||||||
|
|
||||||
|
@ convert_named_struct_decls @
|
||||||
|
type named_struct.t;
|
||||||
|
identifier named_struct_type.i;
|
||||||
|
identifier g;
|
||||||
|
@@
|
||||||
|
- typedef struct g {
|
||||||
|
+ struct i {
|
||||||
|
...
|
||||||
|
}
|
||||||
|
- t
|
||||||
|
;
|
||||||
|
|
||||||
|
/* Replace type with struct */
|
||||||
|
@ named_typedef_to_struct @
|
||||||
|
type named_struct.t;
|
||||||
|
identifier named_struct_type.i;
|
||||||
|
@@
|
||||||
|
- t
|
||||||
|
+ struct i
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Convert unnamed typedef'd structs
|
||||||
|
* Example : typedef struct {} name_t; -> struct name {};
|
||||||
|
*/
|
||||||
|
@ unnamed_struct @
|
||||||
|
type t;
|
||||||
|
@@
|
||||||
|
typedef struct { ... } t;
|
||||||
|
|
||||||
|
/* Make typename usable as identifier */
|
||||||
|
@ script:python unnamed_struct_type @
|
||||||
|
t << unnamed_struct.t;
|
||||||
|
i;
|
||||||
|
@@
|
||||||
|
coccinelle.i = t.rstrip('_t')
|
||||||
|
|
||||||
|
@ convert_unnamed_struct_decls @
|
||||||
|
type unnamed_struct.t;
|
||||||
|
identifier unnamed_struct_type.i;
|
||||||
|
@@
|
||||||
|
-typedef struct {
|
||||||
|
+struct i {
|
||||||
|
...
|
||||||
|
}
|
||||||
|
- t
|
||||||
|
;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Convert unnamed typedef'd enums
|
||||||
|
*/
|
||||||
|
@ unnamed_enum @
|
||||||
|
type t;
|
||||||
|
@@
|
||||||
|
typedef enum { ... } t;
|
||||||
|
|
||||||
|
/* Make typename usable as identifier */
|
||||||
|
@ script:python unnamed_enum_type @
|
||||||
|
t << unnamed_enum.t;
|
||||||
|
i;
|
||||||
|
@@
|
||||||
|
coccinelle.i = t.rstrip('_t')
|
||||||
|
|
||||||
|
@ convert_unnamed_enum_decls @
|
||||||
|
type unnamed_enum.t;
|
||||||
|
identifier unnamed_enum_type.i;
|
||||||
|
@@
|
||||||
|
-typedef enum {
|
||||||
|
+enum i {
|
||||||
|
...
|
||||||
|
}
|
||||||
|
- t
|
||||||
|
;
|
||||||
|
|
||||||
|
/* Replace type with struct */
|
||||||
|
@ unnamed_typedef_to_struct @
|
||||||
|
type unnamed_struct.t;
|
||||||
|
identifier unnamed_struct_type.i;
|
||||||
|
@@
|
||||||
|
-t
|
||||||
|
+struct i
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Pack _ALL_ structs
|
||||||
|
*/
|
||||||
|
@ pack_structs @
|
||||||
|
identifier s;
|
||||||
|
@@
|
||||||
|
|
||||||
|
struct s {
|
||||||
|
...
|
||||||
|
}
|
||||||
|
+ __attribute__((packed))
|
||||||
|
;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* BIGINT to stdint
|
||||||
|
*/
|
||||||
|
@ uint8_t @
|
||||||
|
typedef UINT8;
|
||||||
|
typedef uint8_t;
|
||||||
|
@@
|
||||||
|
- UINT8
|
||||||
|
+ uint8_t
|
||||||
|
|
||||||
|
@ uint16_t @
|
||||||
|
typedef UINT16;
|
||||||
|
typedef uint16_t;
|
||||||
|
@@
|
||||||
|
- UINT16
|
||||||
|
+ uint16_t
|
||||||
|
|
||||||
|
@ uint32_t @
|
||||||
|
typedef UINT32;
|
||||||
|
typedef uint32_t;
|
||||||
|
@@
|
||||||
|
- UINT32
|
||||||
|
+ uint32_t
|
||||||
|
|
||||||
|
@ uint64_t @
|
||||||
|
typedef UINT64;
|
||||||
|
typedef uint64_t;
|
||||||
|
@@
|
||||||
|
- UINT64
|
||||||
|
+ uint64_t
|
||||||
|
|
||||||
|
@ bool @
|
||||||
|
typedef BOOLEAN;
|
||||||
|
typedef bool;
|
||||||
|
@@
|
||||||
|
- BOOLEAN
|
||||||
|
+ bool
|
||||||
|
|
||||||
|
@ wchar_t @
|
||||||
|
typedef CHAR16;
|
||||||
|
typedef wchar_t;
|
||||||
|
@@
|
||||||
|
- CHAR16
|
||||||
|
+ wchar_t
|
||||||
|
|
||||||
|
/* This rule can't be named "void" */
|
||||||
|
@ replace_uppercase_void @
|
||||||
|
typedef VOID;
|
||||||
|
@@
|
||||||
|
- VOID
|
||||||
|
+ void
|
|
@ -0,0 +1,33 @@
|
||||||
|
#
|
||||||
|
# Convert the FspUpdVpd.h header file into a format usable by coreboot
|
||||||
|
# Usage:
|
||||||
|
# fspupdvpd_sanitize.sh <path/to/FspUpdVpd.h>
|
||||||
|
#
|
||||||
|
# This file is part of the coreboot project.
|
||||||
|
#
|
||||||
|
# Copyright (C) 2015-2016 Intel Corp.
|
||||||
|
# (Written by Alexandru Gagniuc <alexandrux.gagniuc@intel.com> for Intel Corp.)
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 2 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
|
||||||
|
PWD=$(dirname "${BASH_SOURCE[0]}")
|
||||||
|
|
||||||
|
SPATCH=spatch
|
||||||
|
|
||||||
|
# Fix line terminations
|
||||||
|
dos2unix $1
|
||||||
|
|
||||||
|
# Clean up trailing whitespace
|
||||||
|
sed -e "s, $,,g" -i $1
|
||||||
|
|
||||||
|
# Now fix the actual coding style
|
||||||
|
$SPATCH -sp_file ${PWD}/fspupdvpd.spatch \
|
||||||
|
-in_place $1
|
Loading…
Reference in New Issue