Message ID | 20191109122625.6244-1-michael@amarulasolutions.com |
---|---|
State | Rejected |
Delegated to: | Kever Yang |
Headers | show |
Series | [U-Boot] rockchip: Fix spl boot order path of booting device | expand |
> From: Michael Trimarchi <michael@amarulasolutions.com> > Date: Sat, 9 Nov 2019 13:26:25 +0100 > > Fix rk3288, rk3188, rk322x, rk3368 > > Tested on rk3288 > > U-Boot SPL 2019.10-rc4-00014-g0493073dc4-dirty (Nov 09 2019 - 13:04:06 +0100) > board_spl_was_booted_from: brom_bootdevice_id 2 maps to 'dwmmc@ff0f0000' > board_boot_order: could not find dwmmc@ff0f0000 in FDT > > Signed-off-by: Michael Trimarchi <michael@amarulasolutions.com> > --- > arch/arm/mach-rockchip/rk3188/rk3188.c | 4 ++-- > arch/arm/mach-rockchip/rk322x/rk322x.c | 4 ++-- > arch/arm/mach-rockchip/rk3288/rk3288.c | 4 ++-- > arch/arm/mach-rockchip/rk3368/rk3368.c | 4 ++-- > 4 files changed, 8 insertions(+), 8 deletions(-) Reviewed-by: Mark Kettenis <kettenis@openbsd.org> > diff --git a/arch/arm/mach-rockchip/rk3188/rk3188.c b/arch/arm/mach-rockchip/rk3188/rk3188.c > index 95f0e3ccbe..1b012f7f67 100644 > --- a/arch/arm/mach-rockchip/rk3188/rk3188.c > +++ b/arch/arm/mach-rockchip/rk3188/rk3188.c > @@ -14,8 +14,8 @@ > #define GRF_BASE 0x20008000 > > const char * const boot_devices[BROM_LAST_BOOTSOURCE + 1] = { > - [BROM_BOOTSOURCE_EMMC] = "dwmmc@1021c000", > - [BROM_BOOTSOURCE_SD] = "dwmmc@10214000", > + [BROM_BOOTSOURCE_EMMC] = "/dwmmc@1021c000", > + [BROM_BOOTSOURCE_SD] = "/dwmmc@10214000", > }; > > #ifdef CONFIG_DEBUG_UART_BOARD_INIT > diff --git a/arch/arm/mach-rockchip/rk322x/rk322x.c b/arch/arm/mach-rockchip/rk322x/rk322x.c > index cd0bf8a70c..562117e6c1 100644 > --- a/arch/arm/mach-rockchip/rk322x/rk322x.c > +++ b/arch/arm/mach-rockchip/rk322x/rk322x.c > @@ -8,8 +8,8 @@ > #include <asm/arch-rockchip/hardware.h> > > const char * const boot_devices[BROM_LAST_BOOTSOURCE + 1] = { > - [BROM_BOOTSOURCE_EMMC] = "dwmmc@30020000", > - [BROM_BOOTSOURCE_SD] = "dwmmc@30000000", > + [BROM_BOOTSOURCE_EMMC] = "/dwmmc@30020000", > + [BROM_BOOTSOURCE_SD] = "/dwmmc@30000000", > }; > > #ifdef CONFIG_DEBUG_UART_BOARD_INIT > diff --git a/arch/arm/mach-rockchip/rk3288/rk3288.c b/arch/arm/mach-rockchip/rk3288/rk3288.c > index 057ce92080..987b4e0d58 100644 > --- a/arch/arm/mach-rockchip/rk3288/rk3288.c > +++ b/arch/arm/mach-rockchip/rk3288/rk3288.c > @@ -22,8 +22,8 @@ DECLARE_GLOBAL_DATA_PTR; > #define GRF_BASE 0xff770000 > > const char * const boot_devices[BROM_LAST_BOOTSOURCE + 1] = { > - [BROM_BOOTSOURCE_EMMC] = "dwmmc@ff0f0000", > - [BROM_BOOTSOURCE_SD] = "dwmmc@ff0c0000", > + [BROM_BOOTSOURCE_EMMC] = "/dwmmc@ff0f0000", > + [BROM_BOOTSOURCE_SD] = "/dwmmc@ff0c0000", > }; > > #ifdef CONFIG_SPL_BUILD > diff --git a/arch/arm/mach-rockchip/rk3368/rk3368.c b/arch/arm/mach-rockchip/rk3368/rk3368.c > index 7ccd417a18..20ae797794 100644 > --- a/arch/arm/mach-rockchip/rk3368/rk3368.c > +++ b/arch/arm/mach-rockchip/rk3368/rk3368.c > @@ -54,8 +54,8 @@ static struct mm_region rk3368_mem_map[] = { > struct mm_region *mem_map = rk3368_mem_map; > > const char * const boot_devices[BROM_LAST_BOOTSOURCE + 1] = { > - [BROM_BOOTSOURCE_EMMC] = "dwmmc@ff0f0000", > - [BROM_BOOTSOURCE_SD] = "dwmmc@ff0c0000", > + [BROM_BOOTSOURCE_EMMC] = "/dwmmc@ff0f0000", > + [BROM_BOOTSOURCE_SD] = "/dwmmc@ff0c0000", > }; > > #ifdef CONFIG_ARCH_EARLY_INIT_R > -- > 2.17.1 > > _______________________________________________ > U-Boot mailing list > U-Boot@lists.denx.de > https://lists.denx.de/listinfo/u-boot
On 2019/11/9 下午8:26, Michael Trimarchi wrote: > Fix rk3288, rk3188, rk322x, rk3368 > > Tested on rk3288 > > U-Boot SPL 2019.10-rc4-00014-g0493073dc4-dirty (Nov 09 2019 - 13:04:06 +0100) > board_spl_was_booted_from: brom_bootdevice_id 2 maps to 'dwmmc@ff0f0000' > board_boot_order: could not find dwmmc@ff0f0000 in FDT > > Signed-off-by: Michael Trimarchi <michael@amarulasolutions.com> Reviewed-by: Kever Yang <kever.yang@rock-chips.com> Thanks, - Kever > --- > arch/arm/mach-rockchip/rk3188/rk3188.c | 4 ++-- > arch/arm/mach-rockchip/rk322x/rk322x.c | 4 ++-- > arch/arm/mach-rockchip/rk3288/rk3288.c | 4 ++-- > arch/arm/mach-rockchip/rk3368/rk3368.c | 4 ++-- > 4 files changed, 8 insertions(+), 8 deletions(-) > > diff --git a/arch/arm/mach-rockchip/rk3188/rk3188.c b/arch/arm/mach-rockchip/rk3188/rk3188.c > index 95f0e3ccbe..1b012f7f67 100644 > --- a/arch/arm/mach-rockchip/rk3188/rk3188.c > +++ b/arch/arm/mach-rockchip/rk3188/rk3188.c > @@ -14,8 +14,8 @@ > #define GRF_BASE 0x20008000 > > const char * const boot_devices[BROM_LAST_BOOTSOURCE + 1] = { > - [BROM_BOOTSOURCE_EMMC] = "dwmmc@1021c000", > - [BROM_BOOTSOURCE_SD] = "dwmmc@10214000", > + [BROM_BOOTSOURCE_EMMC] = "/dwmmc@1021c000", > + [BROM_BOOTSOURCE_SD] = "/dwmmc@10214000", > }; > > #ifdef CONFIG_DEBUG_UART_BOARD_INIT > diff --git a/arch/arm/mach-rockchip/rk322x/rk322x.c b/arch/arm/mach-rockchip/rk322x/rk322x.c > index cd0bf8a70c..562117e6c1 100644 > --- a/arch/arm/mach-rockchip/rk322x/rk322x.c > +++ b/arch/arm/mach-rockchip/rk322x/rk322x.c > @@ -8,8 +8,8 @@ > #include <asm/arch-rockchip/hardware.h> > > const char * const boot_devices[BROM_LAST_BOOTSOURCE + 1] = { > - [BROM_BOOTSOURCE_EMMC] = "dwmmc@30020000", > - [BROM_BOOTSOURCE_SD] = "dwmmc@30000000", > + [BROM_BOOTSOURCE_EMMC] = "/dwmmc@30020000", > + [BROM_BOOTSOURCE_SD] = "/dwmmc@30000000", > }; > > #ifdef CONFIG_DEBUG_UART_BOARD_INIT > diff --git a/arch/arm/mach-rockchip/rk3288/rk3288.c b/arch/arm/mach-rockchip/rk3288/rk3288.c > index 057ce92080..987b4e0d58 100644 > --- a/arch/arm/mach-rockchip/rk3288/rk3288.c > +++ b/arch/arm/mach-rockchip/rk3288/rk3288.c > @@ -22,8 +22,8 @@ DECLARE_GLOBAL_DATA_PTR; > #define GRF_BASE 0xff770000 > > const char * const boot_devices[BROM_LAST_BOOTSOURCE + 1] = { > - [BROM_BOOTSOURCE_EMMC] = "dwmmc@ff0f0000", > - [BROM_BOOTSOURCE_SD] = "dwmmc@ff0c0000", > + [BROM_BOOTSOURCE_EMMC] = "/dwmmc@ff0f0000", > + [BROM_BOOTSOURCE_SD] = "/dwmmc@ff0c0000", > }; > > #ifdef CONFIG_SPL_BUILD > diff --git a/arch/arm/mach-rockchip/rk3368/rk3368.c b/arch/arm/mach-rockchip/rk3368/rk3368.c > index 7ccd417a18..20ae797794 100644 > --- a/arch/arm/mach-rockchip/rk3368/rk3368.c > +++ b/arch/arm/mach-rockchip/rk3368/rk3368.c > @@ -54,8 +54,8 @@ static struct mm_region rk3368_mem_map[] = { > struct mm_region *mem_map = rk3368_mem_map; > > const char * const boot_devices[BROM_LAST_BOOTSOURCE + 1] = { > - [BROM_BOOTSOURCE_EMMC] = "dwmmc@ff0f0000", > - [BROM_BOOTSOURCE_SD] = "dwmmc@ff0c0000", > + [BROM_BOOTSOURCE_EMMC] = "/dwmmc@ff0f0000", > + [BROM_BOOTSOURCE_SD] = "/dwmmc@ff0c0000", > }; > > #ifdef CONFIG_ARCH_EARLY_INIT_R
Hi Michael, There is a similar patch which has been applied few weeks ago: https://patchwork.ozlabs.org/patch/1178346/ Thanks, - Kever On 2019/11/9 下午8:26, Michael Trimarchi wrote: > Fix rk3288, rk3188, rk322x, rk3368 > > Tested on rk3288 > > U-Boot SPL 2019.10-rc4-00014-g0493073dc4-dirty (Nov 09 2019 - 13:04:06 +0100) > board_spl_was_booted_from: brom_bootdevice_id 2 maps to 'dwmmc@ff0f0000' > board_boot_order: could not find dwmmc@ff0f0000 in FDT > > Signed-off-by: Michael Trimarchi <michael@amarulasolutions.com> > --- > arch/arm/mach-rockchip/rk3188/rk3188.c | 4 ++-- > arch/arm/mach-rockchip/rk322x/rk322x.c | 4 ++-- > arch/arm/mach-rockchip/rk3288/rk3288.c | 4 ++-- > arch/arm/mach-rockchip/rk3368/rk3368.c | 4 ++-- > 4 files changed, 8 insertions(+), 8 deletions(-) > > diff --git a/arch/arm/mach-rockchip/rk3188/rk3188.c b/arch/arm/mach-rockchip/rk3188/rk3188.c > index 95f0e3ccbe..1b012f7f67 100644 > --- a/arch/arm/mach-rockchip/rk3188/rk3188.c > +++ b/arch/arm/mach-rockchip/rk3188/rk3188.c > @@ -14,8 +14,8 @@ > #define GRF_BASE 0x20008000 > > const char * const boot_devices[BROM_LAST_BOOTSOURCE + 1] = { > - [BROM_BOOTSOURCE_EMMC] = "dwmmc@1021c000", > - [BROM_BOOTSOURCE_SD] = "dwmmc@10214000", > + [BROM_BOOTSOURCE_EMMC] = "/dwmmc@1021c000", > + [BROM_BOOTSOURCE_SD] = "/dwmmc@10214000", > }; > > #ifdef CONFIG_DEBUG_UART_BOARD_INIT > diff --git a/arch/arm/mach-rockchip/rk322x/rk322x.c b/arch/arm/mach-rockchip/rk322x/rk322x.c > index cd0bf8a70c..562117e6c1 100644 > --- a/arch/arm/mach-rockchip/rk322x/rk322x.c > +++ b/arch/arm/mach-rockchip/rk322x/rk322x.c > @@ -8,8 +8,8 @@ > #include <asm/arch-rockchip/hardware.h> > > const char * const boot_devices[BROM_LAST_BOOTSOURCE + 1] = { > - [BROM_BOOTSOURCE_EMMC] = "dwmmc@30020000", > - [BROM_BOOTSOURCE_SD] = "dwmmc@30000000", > + [BROM_BOOTSOURCE_EMMC] = "/dwmmc@30020000", > + [BROM_BOOTSOURCE_SD] = "/dwmmc@30000000", > }; > > #ifdef CONFIG_DEBUG_UART_BOARD_INIT > diff --git a/arch/arm/mach-rockchip/rk3288/rk3288.c b/arch/arm/mach-rockchip/rk3288/rk3288.c > index 057ce92080..987b4e0d58 100644 > --- a/arch/arm/mach-rockchip/rk3288/rk3288.c > +++ b/arch/arm/mach-rockchip/rk3288/rk3288.c > @@ -22,8 +22,8 @@ DECLARE_GLOBAL_DATA_PTR; > #define GRF_BASE 0xff770000 > > const char * const boot_devices[BROM_LAST_BOOTSOURCE + 1] = { > - [BROM_BOOTSOURCE_EMMC] = "dwmmc@ff0f0000", > - [BROM_BOOTSOURCE_SD] = "dwmmc@ff0c0000", > + [BROM_BOOTSOURCE_EMMC] = "/dwmmc@ff0f0000", > + [BROM_BOOTSOURCE_SD] = "/dwmmc@ff0c0000", > }; > > #ifdef CONFIG_SPL_BUILD > diff --git a/arch/arm/mach-rockchip/rk3368/rk3368.c b/arch/arm/mach-rockchip/rk3368/rk3368.c > index 7ccd417a18..20ae797794 100644 > --- a/arch/arm/mach-rockchip/rk3368/rk3368.c > +++ b/arch/arm/mach-rockchip/rk3368/rk3368.c > @@ -54,8 +54,8 @@ static struct mm_region rk3368_mem_map[] = { > struct mm_region *mem_map = rk3368_mem_map; > > const char * const boot_devices[BROM_LAST_BOOTSOURCE + 1] = { > - [BROM_BOOTSOURCE_EMMC] = "dwmmc@ff0f0000", > - [BROM_BOOTSOURCE_SD] = "dwmmc@ff0c0000", > + [BROM_BOOTSOURCE_EMMC] = "/dwmmc@ff0f0000", > + [BROM_BOOTSOURCE_SD] = "/dwmmc@ff0c0000", > }; > > #ifdef CONFIG_ARCH_EARLY_INIT_R
Hi On Thu, Nov 14, 2019 at 2:10 PM Kever Yang <kever.yang@rock-chips.com> wrote: > > Hi Michael, > > There is a similar patch which has been applied few weeks ago: > > https://patchwork.ozlabs.org/patch/1178346/ > Ok thank you Michael > > Thanks, > > - Kever > > On 2019/11/9 下午8:26, Michael Trimarchi wrote: > > Fix rk3288, rk3188, rk322x, rk3368 > > > > Tested on rk3288 > > > > U-Boot SPL 2019.10-rc4-00014-g0493073dc4-dirty (Nov 09 2019 - 13:04:06 +0100) > > board_spl_was_booted_from: brom_bootdevice_id 2 maps to 'dwmmc@ff0f0000' > > board_boot_order: could not find dwmmc@ff0f0000 in FDT > > > > Signed-off-by: Michael Trimarchi <michael@amarulasolutions.com> > > --- > > arch/arm/mach-rockchip/rk3188/rk3188.c | 4 ++-- > > arch/arm/mach-rockchip/rk322x/rk322x.c | 4 ++-- > > arch/arm/mach-rockchip/rk3288/rk3288.c | 4 ++-- > > arch/arm/mach-rockchip/rk3368/rk3368.c | 4 ++-- > > 4 files changed, 8 insertions(+), 8 deletions(-) > > > > diff --git a/arch/arm/mach-rockchip/rk3188/rk3188.c b/arch/arm/mach-rockchip/rk3188/rk3188.c > > index 95f0e3ccbe..1b012f7f67 100644 > > --- a/arch/arm/mach-rockchip/rk3188/rk3188.c > > +++ b/arch/arm/mach-rockchip/rk3188/rk3188.c > > @@ -14,8 +14,8 @@ > > #define GRF_BASE 0x20008000 > > > > const char * const boot_devices[BROM_LAST_BOOTSOURCE + 1] = { > > - [BROM_BOOTSOURCE_EMMC] = "dwmmc@1021c000", > > - [BROM_BOOTSOURCE_SD] = "dwmmc@10214000", > > + [BROM_BOOTSOURCE_EMMC] = "/dwmmc@1021c000", > > + [BROM_BOOTSOURCE_SD] = "/dwmmc@10214000", > > }; > > > > #ifdef CONFIG_DEBUG_UART_BOARD_INIT > > diff --git a/arch/arm/mach-rockchip/rk322x/rk322x.c b/arch/arm/mach-rockchip/rk322x/rk322x.c > > index cd0bf8a70c..562117e6c1 100644 > > --- a/arch/arm/mach-rockchip/rk322x/rk322x.c > > +++ b/arch/arm/mach-rockchip/rk322x/rk322x.c > > @@ -8,8 +8,8 @@ > > #include <asm/arch-rockchip/hardware.h> > > > > const char * const boot_devices[BROM_LAST_BOOTSOURCE + 1] = { > > - [BROM_BOOTSOURCE_EMMC] = "dwmmc@30020000", > > - [BROM_BOOTSOURCE_SD] = "dwmmc@30000000", > > + [BROM_BOOTSOURCE_EMMC] = "/dwmmc@30020000", > > + [BROM_BOOTSOURCE_SD] = "/dwmmc@30000000", > > }; > > > > #ifdef CONFIG_DEBUG_UART_BOARD_INIT > > diff --git a/arch/arm/mach-rockchip/rk3288/rk3288.c b/arch/arm/mach-rockchip/rk3288/rk3288.c > > index 057ce92080..987b4e0d58 100644 > > --- a/arch/arm/mach-rockchip/rk3288/rk3288.c > > +++ b/arch/arm/mach-rockchip/rk3288/rk3288.c > > @@ -22,8 +22,8 @@ DECLARE_GLOBAL_DATA_PTR; > > #define GRF_BASE 0xff770000 > > > > const char * const boot_devices[BROM_LAST_BOOTSOURCE + 1] = { > > - [BROM_BOOTSOURCE_EMMC] = "dwmmc@ff0f0000", > > - [BROM_BOOTSOURCE_SD] = "dwmmc@ff0c0000", > > + [BROM_BOOTSOURCE_EMMC] = "/dwmmc@ff0f0000", > > + [BROM_BOOTSOURCE_SD] = "/dwmmc@ff0c0000", > > }; > > > > #ifdef CONFIG_SPL_BUILD > > diff --git a/arch/arm/mach-rockchip/rk3368/rk3368.c b/arch/arm/mach-rockchip/rk3368/rk3368.c > > index 7ccd417a18..20ae797794 100644 > > --- a/arch/arm/mach-rockchip/rk3368/rk3368.c > > +++ b/arch/arm/mach-rockchip/rk3368/rk3368.c > > @@ -54,8 +54,8 @@ static struct mm_region rk3368_mem_map[] = { > > struct mm_region *mem_map = rk3368_mem_map; > > > > const char * const boot_devices[BROM_LAST_BOOTSOURCE + 1] = { > > - [BROM_BOOTSOURCE_EMMC] = "dwmmc@ff0f0000", > > - [BROM_BOOTSOURCE_SD] = "dwmmc@ff0c0000", > > + [BROM_BOOTSOURCE_EMMC] = "/dwmmc@ff0f0000", > > + [BROM_BOOTSOURCE_SD] = "/dwmmc@ff0c0000", > > }; > > > > #ifdef CONFIG_ARCH_EARLY_INIT_R > >
diff --git a/arch/arm/mach-rockchip/rk3188/rk3188.c b/arch/arm/mach-rockchip/rk3188/rk3188.c index 95f0e3ccbe..1b012f7f67 100644 --- a/arch/arm/mach-rockchip/rk3188/rk3188.c +++ b/arch/arm/mach-rockchip/rk3188/rk3188.c @@ -14,8 +14,8 @@ #define GRF_BASE 0x20008000 const char * const boot_devices[BROM_LAST_BOOTSOURCE + 1] = { - [BROM_BOOTSOURCE_EMMC] = "dwmmc@1021c000", - [BROM_BOOTSOURCE_SD] = "dwmmc@10214000", + [BROM_BOOTSOURCE_EMMC] = "/dwmmc@1021c000", + [BROM_BOOTSOURCE_SD] = "/dwmmc@10214000", }; #ifdef CONFIG_DEBUG_UART_BOARD_INIT diff --git a/arch/arm/mach-rockchip/rk322x/rk322x.c b/arch/arm/mach-rockchip/rk322x/rk322x.c index cd0bf8a70c..562117e6c1 100644 --- a/arch/arm/mach-rockchip/rk322x/rk322x.c +++ b/arch/arm/mach-rockchip/rk322x/rk322x.c @@ -8,8 +8,8 @@ #include <asm/arch-rockchip/hardware.h> const char * const boot_devices[BROM_LAST_BOOTSOURCE + 1] = { - [BROM_BOOTSOURCE_EMMC] = "dwmmc@30020000", - [BROM_BOOTSOURCE_SD] = "dwmmc@30000000", + [BROM_BOOTSOURCE_EMMC] = "/dwmmc@30020000", + [BROM_BOOTSOURCE_SD] = "/dwmmc@30000000", }; #ifdef CONFIG_DEBUG_UART_BOARD_INIT diff --git a/arch/arm/mach-rockchip/rk3288/rk3288.c b/arch/arm/mach-rockchip/rk3288/rk3288.c index 057ce92080..987b4e0d58 100644 --- a/arch/arm/mach-rockchip/rk3288/rk3288.c +++ b/arch/arm/mach-rockchip/rk3288/rk3288.c @@ -22,8 +22,8 @@ DECLARE_GLOBAL_DATA_PTR; #define GRF_BASE 0xff770000 const char * const boot_devices[BROM_LAST_BOOTSOURCE + 1] = { - [BROM_BOOTSOURCE_EMMC] = "dwmmc@ff0f0000", - [BROM_BOOTSOURCE_SD] = "dwmmc@ff0c0000", + [BROM_BOOTSOURCE_EMMC] = "/dwmmc@ff0f0000", + [BROM_BOOTSOURCE_SD] = "/dwmmc@ff0c0000", }; #ifdef CONFIG_SPL_BUILD diff --git a/arch/arm/mach-rockchip/rk3368/rk3368.c b/arch/arm/mach-rockchip/rk3368/rk3368.c index 7ccd417a18..20ae797794 100644 --- a/arch/arm/mach-rockchip/rk3368/rk3368.c +++ b/arch/arm/mach-rockchip/rk3368/rk3368.c @@ -54,8 +54,8 @@ static struct mm_region rk3368_mem_map[] = { struct mm_region *mem_map = rk3368_mem_map; const char * const boot_devices[BROM_LAST_BOOTSOURCE + 1] = { - [BROM_BOOTSOURCE_EMMC] = "dwmmc@ff0f0000", - [BROM_BOOTSOURCE_SD] = "dwmmc@ff0c0000", + [BROM_BOOTSOURCE_EMMC] = "/dwmmc@ff0f0000", + [BROM_BOOTSOURCE_SD] = "/dwmmc@ff0c0000", }; #ifdef CONFIG_ARCH_EARLY_INIT_R
Fix rk3288, rk3188, rk322x, rk3368 Tested on rk3288 U-Boot SPL 2019.10-rc4-00014-g0493073dc4-dirty (Nov 09 2019 - 13:04:06 +0100) board_spl_was_booted_from: brom_bootdevice_id 2 maps to 'dwmmc@ff0f0000' board_boot_order: could not find dwmmc@ff0f0000 in FDT Signed-off-by: Michael Trimarchi <michael@amarulasolutions.com> --- arch/arm/mach-rockchip/rk3188/rk3188.c | 4 ++-- arch/arm/mach-rockchip/rk322x/rk322x.c | 4 ++-- arch/arm/mach-rockchip/rk3288/rk3288.c | 4 ++-- arch/arm/mach-rockchip/rk3368/rk3368.c | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-)