diff mbox

[U-Boot,v4,03/15] x86: Convert microcode format to device-tree-only

Message ID 1418802649-32647-4-git-send-email-bmeng.cn@gmail.com
State Accepted
Delegated to: Simon Glass
Headers show

Commit Message

Bin Meng Dec. 17, 2014, 7:50 a.m. UTC
From: Simon Glass <sjg@chromium.org>

To avoid having two microcode formats, adjust the build system to support
obtaining the microcode from the device tree, even in the case where it
must be made available before the device tree can be accessed.

Signed-off-by: Simon Glass <sjg@chromium.org>

---

Changes in v4:
- Squash the microcode.dtsi to patch#1 in the v4 series

Changes in v3: None
Changes in v2: None

 Makefile                         |  4 +++-
 arch/x86/cpu/queensbay/tnc_car.S | 11 ++++-------
 arch/x86/dts/crownbay.dts        |  7 +++++++
 3 files changed, 14 insertions(+), 8 deletions(-)

Comments

Bin Meng Dec. 17, 2014, 8:05 a.m. UTC | #1
Hi,

On Wed, Dec 17, 2014 at 3:50 PM, Bin Meng <bmeng.cn@gmail.com> wrote:
> From: Simon Glass <sjg@chromium.org>
>
> To avoid having two microcode formats, adjust the build system to support
> obtaining the microcode from the device tree, even in the case where it
> must be made available before the device tree can be accessed.
>
> Signed-off-by: Simon Glass <sjg@chromium.org>
>
> ---
>
> Changes in v4:
> - Squash the microcode.dtsi to patch#1 in the v4 series
>
> Changes in v3: None
> Changes in v2: None
>
>  Makefile                         |  4 +++-
>  arch/x86/cpu/queensbay/tnc_car.S | 11 ++++-------
>  arch/x86/dts/crownbay.dts        |  7 +++++++
>  3 files changed, 14 insertions(+), 8 deletions(-)
>
> diff --git a/Makefile b/Makefile
> index fd24cde..d4e60e8 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -947,7 +947,9 @@ ifneq ($(CONFIG_X86_RESET_VECTOR),)
>  rom: u-boot.rom FORCE
>
>  IFDTOOL=$(objtree)/tools/ifdtool
> -IFDTOOL_FLAGS  = -w $(CONFIG_SYS_TEXT_BASE):$(objtree)/u-boot-dtb.bin
> +IFDTOOL_FLAGS  = -f 0:$(objtree)/u-boot.dtb
> +IFDTOOL_FLAGS += -m 0x$(shell $(NM) u-boot |grep _dt_ucode_base_size |cut -d' ' -f1)
> +IFDTOOL_FLAGS += -U $(CONFIG_SYS_TEXT_BASE):$(objtree)/u-boot.bin
>  IFDTOOL_FLAGS += -w $(CONFIG_SYS_X86_START16):$(objtree)/u-boot-x86-16bit.bin
>
>  ifneq ($(CONFIG_HAVE_INTEL_ME),)
> diff --git a/arch/x86/cpu/queensbay/tnc_car.S b/arch/x86/cpu/queensbay/tnc_car.S
> index 6834a64..2e9139e 100644
> --- a/arch/x86/cpu/queensbay/tnc_car.S
> +++ b/arch/x86/cpu/queensbay/tnc_car.S
> @@ -116,12 +116,9 @@ temp_ram_init_romstack:
>         .long   temp_ram_init_ret
>         .long   temp_ram_init_params
>  temp_ram_init_params:
> -       .long   ucode_start             /* microcode base */
> -       .long   ucode_size              /* microcode size */
> +_dt_ucode_base_size:
> +       /* These next two fields are filled in by ifdtool */
> +       .long   0                       /* microcode base */
> +       .long   0                       /* microcode size */
>         .long   CONFIG_SYS_MONITOR_BASE /* code region base */
>         .long   CONFIG_SYS_MONITOR_LEN  /* code region size */
> -
> -       .balign 4
> -ucode_start:
> -       .include "arch/x86/cpu/queensbay/M0220661105.inc"
> -ucode_size = ( . - ucode_start)
> diff --git a/arch/x86/dts/crownbay.dts b/arch/x86/dts/crownbay.dts
> index 399dafb..3f43f3c 100644
> --- a/arch/x86/dts/crownbay.dts
> +++ b/arch/x86/dts/crownbay.dts
> @@ -50,4 +50,11 @@
>                         memory-map = <0xffe00000 0x00200000>;
>                 };
>         };
> +
> +       microcode {
> +               update@0 {
> +#include "microcode/m0220661105_cv.dtsi"
> +               };
> +       };
> +
>  };
> --

Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Tested-by: Bin Meng <bmeng.cn@gmail.com>
Simon Glass Dec. 17, 2014, 2:56 p.m. UTC | #2
On 17 December 2014 at 01:05, Bin Meng <bmeng.cn@gmail.com> wrote:
> Hi,
>
> On Wed, Dec 17, 2014 at 3:50 PM, Bin Meng <bmeng.cn@gmail.com> wrote:
>> From: Simon Glass <sjg@chromium.org>
>>
>> To avoid having two microcode formats, adjust the build system to support
>> obtaining the microcode from the device tree, even in the case where it
>> must be made available before the device tree can be accessed.
>>
>> Signed-off-by: Simon Glass <sjg@chromium.org>
>>
>> ---
>>
>> Changes in v4:
>> - Squash the microcode.dtsi to patch#1 in the v4 series
>>
>> Changes in v3: None
>> Changes in v2: None
>>
>>  Makefile                         |  4 +++-
>>  arch/x86/cpu/queensbay/tnc_car.S | 11 ++++-------
>>  arch/x86/dts/crownbay.dts        |  7 +++++++
>>  3 files changed, 14 insertions(+), 8 deletions(-)
>>
>> diff --git a/Makefile b/Makefile
>> index fd24cde..d4e60e8 100644
>> --- a/Makefile
>> +++ b/Makefile
>> @@ -947,7 +947,9 @@ ifneq ($(CONFIG_X86_RESET_VECTOR),)
>>  rom: u-boot.rom FORCE
>>
>>  IFDTOOL=$(objtree)/tools/ifdtool
>> -IFDTOOL_FLAGS  = -w $(CONFIG_SYS_TEXT_BASE):$(objtree)/u-boot-dtb.bin
>> +IFDTOOL_FLAGS  = -f 0:$(objtree)/u-boot.dtb
>> +IFDTOOL_FLAGS += -m 0x$(shell $(NM) u-boot |grep _dt_ucode_base_size |cut -d' ' -f1)
>> +IFDTOOL_FLAGS += -U $(CONFIG_SYS_TEXT_BASE):$(objtree)/u-boot.bin
>>  IFDTOOL_FLAGS += -w $(CONFIG_SYS_X86_START16):$(objtree)/u-boot-x86-16bit.bin
>>
>>  ifneq ($(CONFIG_HAVE_INTEL_ME),)
>> diff --git a/arch/x86/cpu/queensbay/tnc_car.S b/arch/x86/cpu/queensbay/tnc_car.S
>> index 6834a64..2e9139e 100644
>> --- a/arch/x86/cpu/queensbay/tnc_car.S
>> +++ b/arch/x86/cpu/queensbay/tnc_car.S
>> @@ -116,12 +116,9 @@ temp_ram_init_romstack:
>>         .long   temp_ram_init_ret
>>         .long   temp_ram_init_params
>>  temp_ram_init_params:
>> -       .long   ucode_start             /* microcode base */
>> -       .long   ucode_size              /* microcode size */
>> +_dt_ucode_base_size:
>> +       /* These next two fields are filled in by ifdtool */
>> +       .long   0                       /* microcode base */
>> +       .long   0                       /* microcode size */
>>         .long   CONFIG_SYS_MONITOR_BASE /* code region base */
>>         .long   CONFIG_SYS_MONITOR_LEN  /* code region size */
>> -
>> -       .balign 4
>> -ucode_start:
>> -       .include "arch/x86/cpu/queensbay/M0220661105.inc"
>> -ucode_size = ( . - ucode_start)
>> diff --git a/arch/x86/dts/crownbay.dts b/arch/x86/dts/crownbay.dts
>> index 399dafb..3f43f3c 100644
>> --- a/arch/x86/dts/crownbay.dts
>> +++ b/arch/x86/dts/crownbay.dts
>> @@ -50,4 +50,11 @@
>>                         memory-map = <0xffe00000 0x00200000>;
>>                 };
>>         };
>> +
>> +       microcode {
>> +               update@0 {
>> +#include "microcode/m0220661105_cv.dtsi"
>> +               };
>> +       };
>> +
>>  };
>> --
>
> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
> Tested-by: Bin Meng <bmeng.cn@gmail.com>

Applied to u-boot-x86, thanks!
diff mbox

Patch

diff --git a/Makefile b/Makefile
index fd24cde..d4e60e8 100644
--- a/Makefile
+++ b/Makefile
@@ -947,7 +947,9 @@  ifneq ($(CONFIG_X86_RESET_VECTOR),)
 rom: u-boot.rom FORCE
 
 IFDTOOL=$(objtree)/tools/ifdtool
-IFDTOOL_FLAGS  = -w $(CONFIG_SYS_TEXT_BASE):$(objtree)/u-boot-dtb.bin
+IFDTOOL_FLAGS  = -f 0:$(objtree)/u-boot.dtb
+IFDTOOL_FLAGS += -m 0x$(shell $(NM) u-boot |grep _dt_ucode_base_size |cut -d' ' -f1)
+IFDTOOL_FLAGS += -U $(CONFIG_SYS_TEXT_BASE):$(objtree)/u-boot.bin
 IFDTOOL_FLAGS += -w $(CONFIG_SYS_X86_START16):$(objtree)/u-boot-x86-16bit.bin
 
 ifneq ($(CONFIG_HAVE_INTEL_ME),)
diff --git a/arch/x86/cpu/queensbay/tnc_car.S b/arch/x86/cpu/queensbay/tnc_car.S
index 6834a64..2e9139e 100644
--- a/arch/x86/cpu/queensbay/tnc_car.S
+++ b/arch/x86/cpu/queensbay/tnc_car.S
@@ -116,12 +116,9 @@  temp_ram_init_romstack:
 	.long	temp_ram_init_ret
 	.long	temp_ram_init_params
 temp_ram_init_params:
-	.long	ucode_start		/* microcode base */
-	.long	ucode_size		/* microcode size */
+_dt_ucode_base_size:
+	/* These next two fields are filled in by ifdtool */
+	.long	0			/* microcode base */
+	.long	0			/* microcode size */
 	.long	CONFIG_SYS_MONITOR_BASE	/* code region base */
 	.long	CONFIG_SYS_MONITOR_LEN	/* code region size */
-
-	.balign	4
-ucode_start:
-	.include "arch/x86/cpu/queensbay/M0220661105.inc"
-ucode_size = ( . - ucode_start)
diff --git a/arch/x86/dts/crownbay.dts b/arch/x86/dts/crownbay.dts
index 399dafb..3f43f3c 100644
--- a/arch/x86/dts/crownbay.dts
+++ b/arch/x86/dts/crownbay.dts
@@ -50,4 +50,11 @@ 
 			memory-map = <0xffe00000 0x00200000>;
 		};
 	};
+
+	microcode {
+		update@0 {
+#include "microcode/m0220661105_cv.dtsi"
+		};
+	};
+
 };