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:
Alexandru Gagniuc 2015-10-30 18:05:57 -07:00 committed by Martin Roth
parent 0f61da8582
commit 6a587343a9
2 changed files with 220 additions and 0 deletions

View File

@ -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

View File

@ -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