sunxi: axp209: Disable interrupts when intializing the axp209
Subsystems (3)
PATCH 1/9 sunxi: axp209: Disable interrupts when intializing the axp209
We do not use the axp209 interrupt, and at least in my mini-x (which does not have a power button) the pwr-button pin and the irq pin are soldered together, so if the axp209 keeps it irq asserted to long it will see a 10s pwr-button press and hard power off the board, disabling the irqs fixes this.
--- drivers/power/axp209.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-)
drivers/power/axp209.c +13 -1
@@ -16,6 +16,11 @@ enum axp209_reg {AXP209_DCDC3_VOLTAGE =0x27 ,AXP209_LDO24_VOLTAGE =0x28 ,AXP209_LDO3_VOLTAGE =0x29 , +AXP209_IRQ_ENABLE1 =0x40 , +AXP209_IRQ_ENABLE2 =0x41 , +AXP209_IRQ_ENABLE3 =0x42 , +AXP209_IRQ_ENABLE4 =0x43 , +AXP209_IRQ_ENABLE5 =0x44 ,AXP209_IRQ_STATUS5 =0x4c ,AXP209_SHUTDOWN =0x32 , AXP209_GPIO0_CTRL = 0x90,
@@ -143,7 +148,7 @@ int axp209_set_ldo4(int mvolt)int axp209_init (void ) {u8 ver; -int rc; +int i, rc; rc =axp209_read (AXP209_CHIP_VERSION , &ver);if (rc)
@@ -155,6 +160,13 @@ int axp209_init(void)if (ver !=0x1 )return -1 ; +/* Mask all interrupts */ +for (i =AXP209_IRQ_ENABLE1 ; i <=AXP209_IRQ_ENABLE5 ; i++) { + rc =axp209_write (i,0 ); +if (rc) +return rc; + } +return 0 ; }
Signature · 1 line
2.1.0
PATCH 2/9 sunxi: ba10_tv_box_defconfig: Fix USB not working
PH12 is Vbus enable for Vbus2, not Vbus1.
--- configs/ba10_tv_box_defconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
configs/ba10_tv_box_defconfig +1 -1
@@ -1,7 +1,7 @@ CONFIG_SPL=y CONFIG_SYS_EXTRA_OPTIONS="AXP209_POWER,SUNXI_EMAC,USB_EHCI" CONFIG_FDTFILE="sun4i-a10-ba10-tvbox.dtb" -CONFIG_USB1_VBUS_PIN="PH12" +CONFIG_USB2_VBUS_PIN="PH12" +S:CONFIG_ARM=y +S:CONFIG_ARCH_SUNXI=y +S:CONFIG_MACH_SUN4I=y
Signature · 1 line
2.1.0
PATCH 2/9 sunxi: ba10_tv_box_defconfig: Fix USB not working
Quoted 3 lines · Hans de Goede
PH12 is Vbus enable for Vbus2, not Vbus1.
Signed-off-by Hans de Goede <[email protected]>
PATCH 3/9 sunxi: Stop differentiating between 512M and 1G variants of the same board
In reply to Hans de GoedeWhile working on adding more boards I noticed that we lack a config for the 512M cubieboard, and that some of the new boards which I want to add also have 512M and 1G variants, rather then adding 2 defconfig's for all of these, lets switch the exising boards which have both a 512M and 1024M variant over to the sun4i dram autoconfig code.
This also drops the foo_RAMSIZE_defconfig variants of boards where we currently have 2 separate configs already.
Note:
1) The newly introduced CONFIG_DRAM_EMR1 kconfig value is not used with a value other then its default for now, but we need this to be configurable to support some new boards with auto dram config.
2) We always set all CONFIG_DRAM_foo values in defconfigs, even if they match the defaults, this is done to make it more clear what values are used for a certain board.
This has been tested on a Mele A1000, Mini-X and a Cubieboard, all 1G variants, the dram autoconfig code has also been tested on a 512M mk802 (a defconfig for the mk802 is added in a later patch).
--- arch/arm/include/asm/arch-sunxi/dram_sun4i.h | 2 +- board/sunxi/Kconfig | 36 +++++++++++++++------------- board/sunxi/MAINTAINERS | 2 -- board/sunxi/Makefile | 8 +++---- board/sunxi/dram_cubieboard.c | 31 ------------------------ board/sunxi/dram_sun4i_360_1024_iow16.c | 31 ------------------------ board/sunxi/dram_sun4i_360_1024_iow8.c | 31 ------------------------ board/sunxi/dram_sun4i_360_512.c | 31 ------------------------ board/sunxi/dram_sun4i_auto.c | 31 ++++++++++++++++++++++++ configs/Cubieboard_defconfig | 3 +++ configs/Mele_A1000G_defconfig | 8 ------- configs/Mele_A1000_defconfig | 3 +++ configs/Mini-X-1Gb_defconfig | 7 ------ configs/Mini-X_defconfig | 3 +++ 14 files changed, 63 insertions(+), 164 deletions(-) delete mode 100644 board/sunxi/dram_cubieboard.c delete mode 100644 board/sunxi/dram_sun4i_360_1024_iow16.c delete mode 100644 board/sunxi/dram_sun4i_360_1024_iow8.c delete mode 100644 board/sunxi/dram_sun4i_360_512.c create mode 100644 board/sunxi/dram_sun4i_auto.c delete mode 100644 configs/Mele_A1000G_defconfig delete mode 100644 configs/Mini-X-1Gb_defconfig
arch/arm/include/asm/arch-sunxi/dram_sun4i.h +1 -1
@@ -76,7 +76,7 @@ struct dram_para {u32 cas;u32 zq;u32 odt_en; -u32 size; +u32 size;/* For compat with dram.c files from u-boot-sunxi, unused */ u32 tpr0;u32 tpr1;u32 tpr2;
board/sunxi/Kconfig +19 -17
@@ -37,21 +37,31 @@ config MACH_SUN9I endchoice -if MACH_SUN6I || MACH_SUN8I - config DRAM_CLK - int "sun6i dram clock speed" - default 312 + int "sunxi dram clock speed" + default 312 if MACH_SUN6I || MACH_SUN8I + default 360 if MACH_SUN4I || MACH_SUN5I || MACH_SUN7I ---help--- Set the dram clock speed, valid range 240 - 480, must be a multiple - of 24. + of 24. Note on sun4i / sun5i / sun7i this is only used by boards + which use dram autoconfig. config DRAM_ZQ - int "sun6i dram zq value" - default 123 + int "sunxi dram zq value" + default 123 if MACH_SUN4I || MACH_SUN5I || MACH_SUN6I || MACH_SUN8I + default 127 if MACH_SUN7I ---help--- - Set the dram zq value. - + Set the dram zq value. Note on sun4i / sun5i / sun7i this is only + used by boards which use dram autoconfig. + +if MACH_SUN4I || MACH_SUN5I || MACH_SUN7I +config DRAM_EMR1 + int "sunxi dram emr1 value" + default 0 if MACH_SUN4I + default 4 if MACH_SUN5I || MACH_SUN7I + ---help--- + Set the dram controller emr1 value. Note this is only used by boards + which use dram autoconfig. endif config SYS_CONFIG_NAME
@@ -141,10 +151,6 @@ config TARGET_PCDUINO3 bool "PCDUINO3" depends on MACH_SUN7I -config TARGET_MELE_A1000G - bool "MELE_A1000G" - depends on MACH_SUN4I - config TARGET_MELE_A1000 bool "MELE_A1000" depends on MACH_SUN4I
@@ -157,10 +163,6 @@ config TARGET_MELE_M9 bool "MELE_M9" depends on MACH_SUN6I -config TARGET_MINI_X_1GB - bool "MINI_X_1GB" - depends on MACH_SUN4I - config TARGET_MINI_X bool "MINI_X" depends on MACH_SUN4I
board/sunxi/MAINTAINERS +0 -2
@@ -8,10 +8,8 @@ F: configs/ba10_tv_box_defconfig F: configs/Chuwi_V7_CW0825_defconfig F: configs/Cubieboard_defconfig F: configs/Mele_A1000_defconfig -F: configs/Mele_A1000G_defconfig F: configs/Mele_M3_defconfig F: configs/Mini-X_defconfig -F: configs/Mini-X-1Gb_defconfig F: include/configs/sun5i.h F: configs/A10s-OLinuXino-M_defconfig F: configs/A13-OLinuXino_defconfig
board/sunxi/Makefile +3 -5
@@ -24,15 +24,13 @@ obj-$(CONFIG_TARGET_BA10_TV_BOX) += dram_sun4i_384_1024_iow8.o obj-$(CONFIG_TARGET_BANANAPI) += dram_bananapi.o obj-$(CONFIG_TARGET_BANANAPRO) += dram_bananapi.o obj-$(CONFIG_TARGET_CHUWI_V7_CW0825) += dram_sun4i_408_1024_iow16.o -obj-$(CONFIG_TARGET_CUBIEBOARD) += dram_cubieboard.o +obj-$(CONFIG_TARGET_CUBIEBOARD) += dram_sun4i_auto.o obj-$(CONFIG_TARGET_CUBIEBOARD2) += dram_cubieboard2.o obj-$(CONFIG_TARGET_CUBIETRUCK) += dram_cubietruck.o obj-$(CONFIG_TARGET_I12_TVBOX) += dram_sun7i_384_1024_iow16.o -obj-$(CONFIG_TARGET_MELE_A1000) += dram_sun4i_360_512.o -obj-$(CONFIG_TARGET_MELE_A1000G) += dram_sun4i_360_1024_iow8.o +obj-$(CONFIG_TARGET_MELE_A1000) += dram_sun4i_auto.o obj-$(CONFIG_TARGET_MELE_M3) += dram_sun7i_384_1024_iow16.o -obj-$(CONFIG_TARGET_MINI_X) += dram_sun4i_360_512.o -obj-$(CONFIG_TARGET_MINI_X_1GB) += dram_sun4i_360_1024_iow16.o +obj-$(CONFIG_TARGET_MINI_X) += dram_sun4i_auto.o obj-$(CONFIG_TARGET_MSI_PRIMO73) += dram_sun7i_384_1024_iow16.o obj-$(CONFIG_TARGET_PCDUINO) += dram_sun4i_408_1024_iow8.o obj-$(CONFIG_TARGET_PCDUINO3) += dram_linksprite_pcduino3.o
board/sunxi/dram_cubieboard.c deleted +0 -31
@@ -1,31 +0,0 @@ -/* this file is generated, don't edit it yourself */ - -#include <common.h> -#include <asm/arch/dram.h> - -static struct dram_para dram_para = { - .clock =480 , - .type =3 , - .rank_num =1 , - .density =4096 , - .io_width =16 , - .bus_width =32 , - .cas =6 , - .zq =123 , - .odt_en =0 , - .size =1024 , - .tpr0 =0x30926692 , - .tpr1 =0x1090 , - .tpr2 =0x1a0c8 , - .tpr3 =0 , - .tpr4 =0 , - .tpr5 =0 , - .emr1 =0 , - .emr2 =0 , - .emr3 =0 , -}; - -unsigned long sunxi_dram_init (void ) -{ -return dramc_init (&dram_para); -}
board/sunxi/dram_sun4i_360_1024_iow16.c deleted +0 -31
@@ -1,31 +0,0 @@ -/* this file is generated, don't edit it yourself */ - -#include <common.h> -#include <asm/arch/dram.h> - -static struct dram_para dram_para = { - .clock =360 , - .type =3 , - .rank_num =1 , - .density =4096 , - .io_width =16 , - .bus_width =32 , - .cas =6 , - .zq =123 , - .odt_en =0 , - .size =1024 , - .tpr0 =0x30926692 , - .tpr1 =0x1090 , - .tpr2 =0x1a0c8 , - .tpr3 =0 , - .tpr4 =0 , - .tpr5 =0 , - .emr1 =0 , - .emr2 =0 , - .emr3 =0 , -}; - -unsigned long sunxi_dram_init (void ) -{ -return dramc_init (&dram_para); -}
board/sunxi/dram_sun4i_360_1024_iow8.c deleted +0 -31
@@ -1,31 +0,0 @@ -/* this file is generated, don't edit it yourself */ - -#include <common.h> -#include <asm/arch/dram.h> - -static struct dram_para dram_para = { - .clock =360 , - .type =3 , - .rank_num =1 , - .density =2048 , - .io_width =8 , - .bus_width =32 , - .cas =6 , - .zq =123 , - .odt_en =0 , - .size =1024 , - .tpr0 =0x30926692 , - .tpr1 =0x1090 , - .tpr2 =0x1a0c8 , - .tpr3 =0 , - .tpr4 =0 , - .tpr5 =0 , - .emr1 =0 , - .emr2 =0 , - .emr3 =0 , -}; - -unsigned long sunxi_dram_init (void ) -{ -return dramc_init (&dram_para); -}
board/sunxi/dram_sun4i_360_512.c deleted +0 -31
@@ -1,31 +0,0 @@ -/* this file is generated, don't edit it yourself */ - -#include <common.h> -#include <asm/arch/dram.h> - -static struct dram_para dram_para = { - .clock =360 , - .type =3 , - .rank_num =1 , - .density =2048 , - .io_width =16 , - .bus_width =32 , - .cas =6 , - .zq =123 , - .odt_en =0 , - .size =512 , - .tpr0 =0x30926692 , - .tpr1 =0x1090 , - .tpr2 =0x1a0c8 , - .tpr3 =0 , - .tpr4 =0 , - .tpr5 =0 , - .emr1 =0 , - .emr2 =0 , - .emr3 =0 , -}; - -unsigned long sunxi_dram_init (void ) -{ -return dramc_init (&dram_para); -}
board/sunxi/dram_sun4i_auto.c new file +31 -0
@@ -0,0 +1,31 @@ +/* this file is generated, don't edit it yourself */ + +#include <common.h> +#include <asm/arch/dram.h> + +static struct dram_para dram_para = { + .clock =CONFIG_DRAM_CLK , + .type =3 , + .rank_num =1 , + .density =0 , + .io_width =0 , + .bus_width =0 , + .cas =6 , + .zq =CONFIG_DRAM_ZQ , + .odt_en =0 , + .size =0 , + .tpr0 =0x30926692 , + .tpr1 =0x1090 , + .tpr2 =0x1a0c8 , + .tpr3 =0 , + .tpr4 =0 , + .tpr5 =0 , + .emr1 =CONFIG_DRAM_EMR1 , + .emr2 =0 , + .emr3 =0 , +}; + +unsigned long sunxi_dram_init (void ) +{ +return dramc_init (&dram_para); +}
configs/Cubieboard_defconfig +3 -0
@@ -5,3 +5,6 @@ CONFIG_FDTFILE="sun4i-a10-cubieboard.dtb" +S:CONFIG_ARCH_SUNXI=y +S:CONFIG_MACH_SUN4I=y +S:CONFIG_TARGET_CUBIEBOARD=y ++S:CONFIG_DRAM_CLK=480 ++S:CONFIG_DRAM_ZQ=123 ++S:CONFIG_DRAM_EMR1=0
configs/Mele_A1000G_defconfig deleted +0 -8
@@ -1,8 +0,0 @@ -CONFIG_SPL=y -CONFIG_SYS_EXTRA_OPTIONS="AXP209_POWER,SUNXI_EMAC,MACPWR=SUNXI_GPH(15),AHCI,USB_EHCI" -CONFIG_FDTFILE="sun4i-a10-a1000.dtb" -CONFIG_VIDEO_VGA=y -+S:CONFIG_ARM=y -+S:CONFIG_ARCH_SUNXI=y -+S:CONFIG_MACH_SUN4I=y -+S:CONFIG_TARGET_MELE_A1000G=y
configs/Mele_A1000_defconfig +3 -0
@@ -6,3 +6,6 @@ CONFIG_VIDEO_VGA=y +S:CONFIG_ARCH_SUNXI=y +S:CONFIG_MACH_SUN4I=y +S:CONFIG_TARGET_MELE_A1000=y ++S:CONFIG_DRAM_CLK=360 ++S:CONFIG_DRAM_ZQ=123 ++S:CONFIG_DRAM_EMR1=0
configs/Mini-X-1Gb_defconfig deleted +0 -7
@@ -1,7 +0,0 @@ -CONFIG_SPL=y -CONFIG_SYS_EXTRA_OPTIONS="AXP209_POWER,USB_EHCI" -CONFIG_FDTFILE="sun4i-a10-mini-xplus.dtb" -+S:CONFIG_ARM=y -+S:CONFIG_ARCH_SUNXI=y -+S:CONFIG_MACH_SUN4I=y -+S:CONFIG_TARGET_MINI_X_1GB=y
configs/Mini-X_defconfig +3 -0
@@ -5,3 +5,6 @@ CONFIG_FDTFILE="sun4i-a10-mini-xplus.dtb" +S:CONFIG_ARCH_SUNXI=y +S:CONFIG_MACH_SUN4I=y +S:CONFIG_TARGET_MINI_X=y ++S:CONFIG_DRAM_CLK=360 ++S:CONFIG_DRAM_ZQ=123 ++S:CONFIG_DRAM_EMR1=0
Signature · 1 line
2.1.0
PATCH 3/9 sunxi: Stop differentiating between 512M and 1G variants of the same board
board/sunxi/dram_sun4i_auto.c line 1
Quoted 7 lines · Hans de Goede
board/sunxi/dram_sun4i_auto.c new file +1
-0@@ -0,0 +1,31 @@ +/* this file is generated, don't edit it yourself */
This isn't strictly true any more, is it?
Ian.
PATCH 3/9 sunxi: Stop differentiating between 512M and 1G variants of the same board
Hi,
Quoted 10 lines · Ian Campbell
board/sunxi/dram_sun4i_auto.c line 1
Quoted 7 lines · Hans de Goede
board/sunxi/dram_sun4i_auto.c new file +1
-0@@ -0,0 +1,31 @@ +/* this file is generated, don't edit it yourself */ This isn't strictly true any more, is it?
Yeah I was thinking the same thing when working on this but I wasn't sure what to do I'll drop the comment, as it is clearly false.
And thanks for the reviews.
Quoted 1 line
Acked-by Ian Campbell <[email protected]>
Regards,
Hans
PATCH 3/9 sunxi: Stop differentiating between 512M and 1G variants of the same board
In reply to Hans de GoedeQuoted 18 lines · On Sun, 18 Jan 2015 13:23:26 +0100 Hans de Goede <[email protected]> wrote:
While working on adding more boards I noticed that we lack a config for the 512M cubieboard, and that some of the new boards which I want to add also have 512M and 1G variants, rather then adding 2 defconfig's for all of these, lets switch the exising boards which have both a 512M and 1024M variant over to the sun4i dram autoconfig code.
This also drops the
foo_RAMSIZE_defconfigvariants of boards where we currently have 2 separate configs already.Note:
1) The newly introducedCONFIG_DRAM_EMR1kconfig value is not used with a value other then its default for now, but we need this to be configurable to support some new boards with auto dram config.2) We always set all
CONFIG_DRAM_foovalues in defconfigs, even if they match the defaults, this is done to make it more clear what values are used for a certain board.
Quoted 5 lines
This has been tested on a Mele A1000, Mini-X and a Cubieboard, all 1G variants, the dram autoconfig code has also been tested on a 512M mk802 (a defconfig for the mk802 is added in a later patch).
Signed-off-by Hans de Goede <[email protected]>
Thanks for finally finding time to do some refinements in this pile of junk dram settings for the boards that you are maintaining.
I think that adding the Kconfig options is fine as long as they are not abused and the 'dram_para' structure is kept. We want to be able to update DRAM settings without the need of recompiling SPL. Currently this can be relatively easily done by finding and patching the 'dram_para' structure inside of the SPL binary.
In general this looks like a good change. However see below.
[...]
Quoted 18 lines
+++
b/board/sunxi/dram_sun4i_auto.cboard/sunxi/dram_sun4i_auto.c new file +16
-0@@ -0,0 +1,31 @@ +/* this file is generated, don't edit it yourself */ + +#include <common.h> +#include <asm/arch/dram.h> + +static struct dram_para dram_para = { + .clock =CONFIG_DRAM_CLK , + .type =3 , + .rank_num =1 , + .density =0 , + .io_width =0 , + .bus_width =0 , + .cas =6 , + .zq =CONFIG_DRAM_ZQ , + .odt_en =0 , + .size =0 ,
board/sunxi/dram_sun4i_auto.c line 26
Quoted 10 lines
board/sunxi/dram_sun4i_auto.c new file +10
-0+ .tpr0 = 0x30926692, + .tpr1 = 0x1090, + .tpr2 = 0x1a0c8, + .tpr3 = 0, + .tpr4 = 0, + .tpr5 = 0, + .emr1 = CONFIG_DRAM_EMR1, + .emr2 = 0, + .emr3 = 0, +};
As we already discussed earlier
http://lists.denx.de/pipermail/u-boot/2014-September/189266.html
these tpr0/tpr1/tpr2 settings are configured for DDR2-800E (and 400MHz clock speed because of double data rate). Yes, DDR2 (!) instead of DDR3. This in practice is not very much off from DDR3-800, except for the tXS parameter. But tXS is only relevant for self-refresh, which is currently not used by the u-boot or the mainline kernel anyway. That's why this all does not crash and burn in an obvious way.
Anyway, these timings are still wrong for the boards running DRAM at the clock speeds higher than 400MHz. For example, they are ~20% outside of the valid range at 480MHz and this all works by pure luck, thanks to the hardware typically having some safety/overclocking margin.
If we look at the parameters used by the sun7i boards:
.cas = 9, .tpr0 = 0x42d899b7, .tpr1 = 0xa090, .tpr2 = 0x22a00,
... then we can see that the settings are also a bit fishy. The tpr1/tpr2 parameters are matching DDR3-800 timings. And tpr0 is matching DDR3-1333 timings with 1KB (!) page size, while many sunxi devices are using 2KB pages. So it's some weird crossbreed, which is however somewhat less wrong than the settings from sun4i boards.
I would suggest trying one of the following DRAM settings, generated as explained at http://linux-sunxi.org/Mainline_U-boot#DRAM_Settings
And injecting the .clock, .zq and .emr1 parameters from Kconfig.
static struct dram_para dram_para = { /* DRAM timings: 7-7-7-18 (480 MHz) */
.clock = 480, .type = 3, .rank_num = 1, .cas = 7, .zq = 0x7b, .odt_en = 0, .tpr0 = 0x30927790, .tpr1 = 0xa0b0, .tpr2 = 0x23200, .tpr3 = 0x0, .tpr4 = 0x0, .tpr5 = 0x0, .emr1 = 0x0, .emr2 = 0x8, .emr3 = 0x0,
.active_windowing = 1,
};
static struct dram_para dram_para = { /* DRAM timings: 7-8-8-20 (528 MHz) */
.clock = 528, .type = 3, .rank_num = 1, .cas = 7, .zq = 0x7b, .odt_en = 0, .tpr0 = 0x36948890, .tpr1 = 0xa0c0, .tpr2 = 0x23600, .tpr3 = 0x0, .tpr4 = 0x0, .tpr5 = 0x0, .emr1 = 0x0, .emr2 = 0x8, .emr3 = 0x0,
.active_windowing = 1,
};
Alternatively, we can add runtime calculation of cas/tpr0/tpr1/tpr2/emr2 parameters directly into SPL, thus better matching the selected DRAM clock speed and reducing memory access latency. The disadvantages of this approach are:
1. Somewhat increased SPL size.
2. Some DDR3 chips have better timings than generic JEDEC speed bins, so using generic timings for every board may be not very optimal.
This all is only blocked on the lack of cooperation from the u-boot sunxi boards maintainers, who appear to be kinda happy with the status quo and prefer the sacred magic settings from the vendors over what is suggested by the geeks doing reverse engineering ;-)
To sum it up. We need motivated testers in order to improve things. Clever hackers are not really required.
Signature · 2 lines
Best regards, Siarhei Siamashka
PATCH 3/9 sunxi: Stop differentiating between 512M and 1G variants of the same board
Hi,
Quoted 144 lines · Siarhei Siamashka
Quoted 18 lines · On Sun, 18 Jan 2015 13:23:26 +0100 Hans de Goede <[email protected]> wrote:
While working on adding more boards I noticed that we lack a config for the 512M cubieboard, and that some of the new boards which I want to add also have 512M and 1G variants, rather then adding 2 defconfig's for all of these, lets switch the exising boards which have both a 512M and 1024M variant over to the sun4i dram autoconfig code.
This also drops the
foo_RAMSIZE_defconfigvariants of boards where we currently have 2 separate configs already.Note:
1) The newly introducedCONFIG_DRAM_EMR1kconfig value is not used with a value other then its default for now, but we need this to be configurable to support some new boards with auto dram config.2) We always set all
CONFIG_DRAM_foovalues in defconfigs, even if they match the defaults, this is done to make it more clear what values are used for a certain board.Quoted 5 lines
This has been tested on a Mele A1000, Mini-X and a Cubieboard, all 1G variants, the dram autoconfig code has also been tested on a 512M mk802 (a defconfig for the mk802 is added in a later patch).
Signed-off-by Hans de Goede <[email protected]>Thanks for finally finding time to do some refinements in this pile of junk dram settings for the boards that you are maintaining.
I think that adding the
Kconfigoptions is fine as long as they are not abused and the 'dram_para' structure is kept. We want to be able to update DRAM settings without the need of recompiling SPL. Currently this can be relatively easily done by finding and patching the 'dram_para' structure inside of the SPL binary.In general this looks like a good change. However see below.
[...]
Quoted 18 lines
+++
b/board/sunxi/dram_sun4i_auto.cboard/sunxi/dram_sun4i_auto.c new file +16
-0@@ -0,0 +1,31 @@ +/* this file is generated, don't edit it yourself */ + +#include <common.h> +#include <asm/arch/dram.h> + +static struct dram_para dram_para = { + .clock =CONFIG_DRAM_CLK , + .type =3 , + .rank_num =1 , + .density =0 , + .io_width =0 , + .bus_width =0 , + .cas =6 , + .zq =CONFIG_DRAM_ZQ , + .odt_en =0 , + .size =0 ,board/sunxi/dram_sun4i_auto.c line 26
Quoted 10 lines
board/sunxi/dram_sun4i_auto.c new file +10
-0+ .tpr0 = 0x30926692, + .tpr1 = 0x1090, + .tpr2 = 0x1a0c8, + .tpr3 = 0, + .tpr4 = 0, + .tpr5 = 0, + .emr1 = CONFIG_DRAM_EMR1, + .emr2 = 0, + .emr3 = 0, +};As we already discussed earlier
http://lists.denx.de/pipermail/u-boot/2014-September/189266.htmlthese tpr0/tpr1/tpr2 settings are configured for DDR2-800E (and 400MHz clock speed because of double data rate). Yes, DDR2 (!) instead of DDR3. This in practice is not very much off from DDR3-800, except for the tXS parameter. But tXS is only relevant for self-refresh, which is currently not used by the u-boot or the mainline kernel anyway. That's why this all does not crash and burn in an obvious way.
Anyway, these timings are still wrong for the boards running DRAM at the clock speeds higher than 400MHz. For example, they are ~20% outside of the valid range at 480MHz and this all works by pure luck, thanks to the hardware typically having some safety/overclocking margin.
If we look at the parameters used by the sun7i boards:
.cas = 9, .tpr0 = 0x42d899b7, .tpr1 = 0xa090, .tpr2 = 0x22a00,... then we can see that the settings are also a bit fishy. The tpr1/tpr2 parameters are matching DDR3-800 timings. And tpr0 is matching DDR3-1333 timings with 1KB (!) page size, while many sunxi devices are using 2KB pages. So it's some weird crossbreed, which is however somewhat less wrong than the settings from sun4i boards.
I would suggest trying one of the following DRAM settings, generated as explained at http://linux-sunxi.org/Mainline_U-boot#DRAM_Settings
And injecting the .clock, .zq and .emr1 parameters fromKconfig.static struct
dram_paradram_para= { /* DRAM timings: 7-7-7-18 (480 MHz) */.clock = 480, .type = 3, .rank_num = 1, .cas = 7, .zq = 0x7b, .odt_en = 0, .tpr0 = 0x30927790, .tpr1 = 0xa0b0, .tpr2 = 0x23200, .tpr3 = 0x0, .tpr4 = 0x0, .tpr5 = 0x0, .emr1 = 0x0, .emr2 = 0x8, .emr3 = 0x0,.active_windowing = 1,
};static struct
dram_paradram_para= { /* DRAM timings: 7-8-8-20 (528 MHz) */.clock = 528, .type = 3, .rank_num = 1, .cas = 7, .zq = 0x7b, .odt_en = 0, .tpr0 = 0x36948890, .tpr1 = 0xa0c0, .tpr2 = 0x23600, .tpr3 = 0x0, .tpr4 = 0x0, .tpr5 = 0x0, .emr1 = 0x0, .emr2 = 0x8, .emr3 = 0x0,.active_windowing = 1,
};Alternatively, we can add runtime calculation of cas/tpr0/tpr1/tpr2/emr2 parameters directly into SPL, thus better matching the selected DRAM clock speed and reducing memory access latency. The disadvantages of this approach are:
1. Somewhat increased SPL size.
2. Some DDR3 chips have better timings than generic JEDEC speed bins, so using generic timings for every board may be not very optimal.
Quoted 4 lines
This all is only blocked on the lack of cooperation from the u-boot sunxi boards maintainers, who appear to be kinda happy with the status quo and prefer the sacred magic settings from the vendors over what is suggested by the geeks doing reverse engineering ;-)
Siarhei, thanks for bringing this topic up once again, I agree that this is ideally something which we should fix. The problem is that the only way to know that any new settings which we do are actually good, is to test them on lots of boards, and I do not mean one of each board, but at least 10 of each board or some such.
Unfortunately that is not really feasible due to -ENOHWARDARE (not 10 of each) and -ENOTIME.
Still I would like to get this sorted, so I would like to move to the recommended timings for the generic JEDEC speed bins, you rightfully point out that those may not be 100% optimal, but given that we're dealing with a lot of cheap boards, I think that those are our best bet.
The plan would be for you to submit a patch for that, and then I'll add that to my sunxi-wip branch right away, this way all the testing I do, as well as all the testing people using my sunxi-wip branch do will use the new timings, and then once v2015.04 stabilizes a bit we can add that patch to u-boot-sunxi/next, getting it ready for v2015.07 .
Does that sound like a plan ?
Ian, what do you think about this ?
As for runtime calculation, it might be easier to instead do something like this in the "new" dram_sun4i_auto.c file which my patch-set introduces:
#if CONFIG_DRAM_CLK > 528
#error DRAM clocks above 528 Mhz are not supported #elif CONFIG_DRAM_CLK > 480
static struct dram_para dram_para = { /* DRAM timings: 7-8-8-20 (528 MHz) */
.clock = CONFIG_DRAM_CLK,
...
};
#elif CONFIG_DRAM_CLK > 400
static struct dram_para dram_para = { /* DRAM timings: 7-7-7-18 (480 MHz) */
.clock = CONFIG_DRAM_CLK,
...
};
#elif CONFIG_DRAM_CLK > 360
static struct dram_para dram_para = { /* DRAM timings: a-b-c-d (400 MHz) */
.clock = CONFIG_DRAM_CLK,
...
};
#else
static struct dram_para dram_para = { /* DRAM timings: a-b-c-d (360 MHz) */
.clock = CONFIG_DRAM_CLK,
...
};
#endif
This way we will not grow the spl, and keep an easy editable set of dram_para in the spl for people who like to hexedit the spl ...
Regards,
Hans
PATCH 3/9 sunxi: Stop differentiating between 512M and 1G variants of the same board
Quoted 5 lines · Hans de Goede
Siarhei, thanks for bringing this topic up once again, I agree that this is ideally something which we should fix. The problem is that the only way to know that any new settings which we do are actually good, is to test them on lots of boards, and I do not mean one of each board, but at least 10 of each board or some such.
I agree. Having settings which are optimal for Hans' board but untested elsewhere would not be a good idea IMHO.
Quoted 4 lines
Still I would like to get this sorted, so I would like to move to the recommended timings for the generic JEDEC speed bins, you rightfully point out that those may not be 100% optimal, but given that we're dealing with a lot of cheap boards, I think that those are our best bet.
Agreed. In the absence of an ability to test lots of boards this is probably the best we can do.
An alternative would be to use the settings from the factory firmware, but I don't think we have any real reason to think these will be any better in general than the JEDEC timings, at least not without lots of testing (see previous paragraph).
Quoted 9 lines
The plan would be for you to submit a patch for that, and then I'll add that to my sunxi-wip branch right away, this way all the testing I do, as well as all the testing people using my sunxi-wip branch do will use the new timings, and then once v2015.04 stabilizes a bit we can add that patch to u-boot-sunxi/next, getting it ready for v2015.07 .
Does that sound like a plan ?
Ian, what do you think about this ?
Go for it.
Quoted 2 lines
This way we will not grow the spl, and keep an easy editable set of
dram_parain the spl for people who like to hexedit the spl ...
At the start of the #ifdef chain you could add
#ifdef CONFIG...CUSTOM_DRAM_SETTINGS
static struct dram_para dram_para = {
CONFIG_...CUSTOM_DRAM_SETTINGS
};
#elif ...
along with a corresponding Kconfig entry (perhaps depends on EXPERT?).
Then people who really want to tweak things could enter "CONFIG....=.clock=XXX,.type=YYY,.." in their .config (menuconfig etc) or defconfig to their heart's content. (only question is what the character limit on a config option is...)
Ian.
PATCH 4/9 sunxi: Convert Linksprite_pcDuino_defconfig to use auto dram configuration
In reply to Hans de GoedeCurrently we've separate detailed dram settings for all sun4i boards, this moves them over to using auto dram configuration so that we can get rid of all the per board dram_foo.c files.
--- board/sunxi/Makefile | 2 +- board/sunxi/dram_sun4i_408_1024_iow8.c | 31 ------------------------------- configs/Linksprite_pcDuino_defconfig | 3 +++ 3 files changed, 4 insertions(+), 32 deletions(-) delete mode 100644 board/sunxi/dram_sun4i_408_1024_iow8.c
board/sunxi/Makefile +1 -1
@@ -32,7 +32,7 @@ obj-$(CONFIG_TARGET_MELE_A1000) += dram_sun4i_auto.o obj-$(CONFIG_TARGET_MELE_M3) += dram_sun7i_384_1024_iow16.o obj-$(CONFIG_TARGET_MINI_X) += dram_sun4i_auto.o obj-$(CONFIG_TARGET_MSI_PRIMO73) += dram_sun7i_384_1024_iow16.o -obj-$(CONFIG_TARGET_PCDUINO) += dram_sun4i_408_1024_iow8.o +obj-$(CONFIG_TARGET_PCDUINO) += dram_sun4i_auto.o obj-$(CONFIG_TARGET_PCDUINO3) += dram_linksprite_pcduino3.o obj-$(CONFIG_TARGET_QT840A) += dram_sun7i_384_512_busw16_iow16.o obj-$(CONFIG_TARGET_R7DONGLE) += dram_r7dongle.o
board/sunxi/dram_sun4i_408_1024_iow8.c deleted +0 -31
@@ -1,31 +0,0 @@ -/* this file is generated, don't edit it yourself */ - -#include <common.h> -#include <asm/arch/dram.h> - -static struct dram_para dram_para = { - .clock =408 , - .type =3 , - .rank_num =1 , - .density =2048 , - .io_width =8 , - .bus_width =32 , - .cas =6 , - .zq =123 , - .odt_en =0 , - .size =1024 , - .tpr0 =0x30926692 , - .tpr1 =0x1090 , - .tpr2 =0x1a0c8 , - .tpr3 =0 , - .tpr4 =0 , - .tpr5 =0 , - .emr1 =0 , - .emr2 =0 , - .emr3 =0 , -}; - -unsigned long sunxi_dram_init (void ) -{ -return dramc_init (&dram_para); -}
configs/Linksprite_pcDuino_defconfig +3 -0
@@ -5,3 +5,6 @@ CONFIG_FDTFILE="sun4i-a10-pcduino.dtb" +S:CONFIG_ARCH_SUNXI=y +S:CONFIG_MACH_SUN4I=y +S:CONFIG_TARGET_PCDUINO=y ++S:CONFIG_DRAM_CLK=408 ++S:CONFIG_DRAM_ZQ=123 ++S:CONFIG_DRAM_EMR1=0
Signature · 1 line
2.1.0
PATCH 4/9 sunxi: Convert Linksprite_pcDuino_defconfig to use auto dram configuration
Quoted 2 lines · Hans de Goede
Currently we've separate detailed dram settings for all sun4i boards, this moves them
There's only one board here, did you intend for the next patch to be folder with this one as a bulk switch? Or is there something particularly interesting about this one?
Quoted 72 lines
over to using auto dram configuration so that we can get rid of
all the per boarddram_foo.cfiles.Signed-off-by Hans de Goede <[email protected]>--- board/sunxi/Makefile | 2 +- board/sunxi/dram_sun4i_408_1024_iow8.c | 31 ------------------------------- configs/Linksprite_pcDuino_defconfig | 3 +++ 3 files changed, 4 insertions(+), 32 deletions(-) delete mode 100644 board/sunxi/dram_sun4i_408_1024_iow8.cboard/sunxi/Makefile +1
-1@@ -32,7 +32,7 @@ obj-$(CONFIG_TARGET_MELE_A1000) += dram_sun4i_auto.o obj-$(CONFIG_TARGET_MELE_M3) += dram_sun7i_384_1024_iow16.o obj-$(CONFIG_TARGET_MINI_X) += dram_sun4i_auto.o obj-$(CONFIG_TARGET_MSI_PRIMO73) += dram_sun7i_384_1024_iow16.o -obj-$(CONFIG_TARGET_PCDUINO) += dram_sun4i_408_1024_iow8.o +obj-$(CONFIG_TARGET_PCDUINO) += dram_sun4i_auto.o obj-$(CONFIG_TARGET_PCDUINO3) += dram_linksprite_pcduino3.o obj-$(CONFIG_TARGET_QT840A) += dram_sun7i_384_512_busw16_iow16.o obj-$(CONFIG_TARGET_R7DONGLE) += dram_r7dongle.oboard/sunxi/dram_sun4i_408_1024_iow8.c deleted +0
-31@@ -1,31 +0,0 @@ -/* this file is generated, don't edit it yourself */ - -#include <common.h> -#include <asm/arch/dram.h> - -static struct dram_para dram_para = { - .clock =408 , - .type =3 , - .rank_num =1 , - .density =2048 , - .io_width =8 , - .bus_width =32 , - .cas =6 , - .zq =123 , - .odt_en =0 , - .size =1024 , - .tpr0 =0x30926692 , - .tpr1 =0x1090 , - .tpr2 =0x1a0c8 , - .tpr3 =0 , - .tpr4 =0 , - .tpr5 =0 , - .emr1 =0 , - .emr2 =0 , - .emr3 =0 , -}; - -unsigned long sunxi_dram_init (void ) -{ -return dramc_init (&dram_para); -}configs/Linksprite_pcDuino_defconfig +3
-0@@ -5,3 +5,6 @@ CONFIG_FDTFILE="sun4i-a10-pcduino.dtb" +S:CONFIG_ARCH_SUNXI=y +S:CONFIG_MACH_SUN4I=y +S:CONFIG_TARGET_PCDUINO=y ++S:CONFIG_DRAM_CLK=408 ++S:CONFIG_DRAM_ZQ=123 ++S:CONFIG_DRAM_EMR1=0
PATCH 4/9 sunxi: Convert Linksprite_pcDuino_defconfig to use auto dram configuration
Quoted 7 lines · Ian Campbell
Quoted 2 lines · Hans de Goede
Currently we've separate detailed dram settings for all sun4i boards, this moves them
There's only one board here, did you intend for the next patch to be folder with this one as a bulk switch? Or is there something particularly interesting about this one?
Maybe you intended to Cc Zoltan who is listed in MAINTAINERS for this board for testing? (Whereas apparently you own all the ones in the next patch).
PATCH 4/9 sunxi: Convert Linksprite_pcDuino_defconfig to use auto dram configuration
Hi,
Quoted 5 lines · Ian Campbell
Quoted 4 lines · Ian Campbell
Quoted 2 lines · Hans de Goede
Currently we've separate detailed dram settings for all sun4i boards, this moves them
Quoted 7 lines
Quoted 3 lines
There's only one board here, did you intend for the next patch to be folder with this one as a bulk switch? Or is there something particularly interesting about this one?
Maybe you intended to Cc Zoltan who is listed in
MAINTAINERSfor this board for testing? (Whereas apparently you own all the ones in the next patch).
Right, but rather then Cc-ing him I've mailed him privately.
Regards,
Hans
PATCH 4/9 sunxi: Convert Linksprite_pcDuino_defconfig to use auto dram configuration
In reply to Ian CampbellHi,
Quoted 7 lines · Ian Campbell
Quoted 2 lines · Hans de Goede
Currently we've separate detailed dram settings for all sun4i boards, this moves them
There's only one board here, did you intend for the next patch to be folder with this one as a bulk switch? Or is there something particularly interesting about this one?
The only thing special about this board is that it is the only currently supported sun4i board which I do not have :)
I'm waiting for Zoltan to get back to me with testing results and then I can add his Tested-by, I can squash it into the next patch and add his Tested-by there, I guess that makes more sense.
Regards,
Hans
Quoted 75 lines
Quoted 73 lines
over to using auto dram configuration so that we can get rid of
all the per boarddram_foo.cfiles.Signed-off-by Hans de Goede <[email protected]>--- board/sunxi/Makefile | 2 +- board/sunxi/dram_sun4i_408_1024_iow8.c | 31 ------------------------------- configs/Linksprite_pcDuino_defconfig | 3 +++ 3 files changed, 4 insertions(+), 32 deletions(-)delete mode 100644
board/sunxi/dram_sun4i_408_1024_iow8.cboard/sunxi/Makefile +1
-1@@ -32,7 +32,7 @@ obj-$(CONFIG_TARGET_MELE_A1000) += dram_sun4i_auto.o obj-$(CONFIG_TARGET_MELE_M3) += dram_sun7i_384_1024_iow16.o obj-$(CONFIG_TARGET_MINI_X) += dram_sun4i_auto.o obj-$(CONFIG_TARGET_MSI_PRIMO73) += dram_sun7i_384_1024_iow16.o -obj-$(CONFIG_TARGET_PCDUINO) += dram_sun4i_408_1024_iow8.o +obj-$(CONFIG_TARGET_PCDUINO) += dram_sun4i_auto.o obj-$(CONFIG_TARGET_PCDUINO3) += dram_linksprite_pcduino3.o obj-$(CONFIG_TARGET_QT840A) += dram_sun7i_384_512_busw16_iow16.o obj-$(CONFIG_TARGET_R7DONGLE) += dram_r7dongle.oboard/sunxi/dram_sun4i_408_1024_iow8.c deleted +0
-31@@ -1,31 +0,0 @@ -/* this file is generated, don't edit it yourself */ - -#include <common.h> -#include <asm/arch/dram.h> - -static struct dram_para dram_para = { - .clock =408 , - .type =3 , - .rank_num =1 , - .density =2048 , - .io_width =8 , - .bus_width =32 , - .cas =6 , - .zq =123 , - .odt_en =0 , - .size =1024 , - .tpr0 =0x30926692 , - .tpr1 =0x1090 , - .tpr2 =0x1a0c8 , - .tpr3 =0 , - .tpr4 =0 , - .tpr5 =0 , - .emr1 =0 , - .emr2 =0 , - .emr3 =0 , -}; - -unsigned long sunxi_dram_init (void ) -{ -return dramc_init (&dram_para); -}configs/Linksprite_pcDuino_defconfig +3
-0@@ -5,3 +5,6 @@ CONFIG_FDTFILE="sun4i-a10-pcduino.dtb" +S:CONFIG_ARCH_SUNXI=y +S:CONFIG_MACH_SUN4I=y +S:CONFIG_TARGET_PCDUINO=y ++S:CONFIG_DRAM_CLK=408 ++S:CONFIG_DRAM_ZQ=123 ++S:CONFIG_DRAM_EMR1=0
PATCH 5/9 sunxi: Convert sun4i boards to use auto dram configuration
In reply to Hans de GoedeCurrently we've separate detailed dram settings for all sun4i boards, this moves them over to using auto dram configuration so that we can get rid of all the per board dram_foo.c files.
This been tested on a A10-OLinuXino-Lime, Chuwi_V7_CW0825 and ba10_tv_box.
--- board/sunxi/Makefile | 8 +------- board/sunxi/dram_a10_olinuxino_l.c | 31 ------------------------------- board/sunxi/dram_sun4i_384_1024_iow8.c | 31 ------------------------------- board/sunxi/dram_sun4i_408_1024_iow16.c | 31 ------------------------------- configs/A10-OLinuXino-Lime_defconfig | 3 +++ configs/Chuwi_V7_CW0825_defconfig | 3 +++ configs/ba10_tv_box_defconfig | 3 +++ 7 files changed, 10 insertions(+), 100 deletions(-) delete mode 100644 board/sunxi/dram_a10_olinuxino_l.c delete mode 100644 board/sunxi/dram_sun4i_384_1024_iow8.c delete mode 100644 board/sunxi/dram_sun4i_408_1024_iow16.c
board/sunxi/Makefile +1 -7
@@ -11,7 +11,7 @@ obj-y += board.o obj-$(CONFIG_SUNXI_GMAC) += gmac.o obj-$(CONFIG_SUNXI_AHCI) += ahci.o -obj-$(CONFIG_TARGET_A10_OLINUXINO_L) += dram_a10_olinuxino_l.o +obj-$(CONFIG_MACH_SUN4I) += dram_sun4i_auto.o obj-$(CONFIG_TARGET_A10S_OLINUXINO_M) += dram_a10s_olinuxino_m.o obj-$(CONFIG_TARGET_A13_OLINUXINO) += dram_a13_olinuxino.o obj-$(CONFIG_TARGET_A13_OLINUXINOM) += dram_a13_oli_micro.o
@@ -20,19 +20,13 @@ obj-$(CONFIG_TARGET_A20_OLINUXINO_L2) += dram_a20_olinuxino_l2.o obj-$(CONFIG_TARGET_A20_OLINUXINO_M) += dram_sun7i_384_1024_iow16.o # This is not a typo, uses the same mem settings as the a10s-olinuxino-m obj-$(CONFIG_TARGET_AUXTEK_T004) += dram_a10s_olinuxino_m.o -obj-$(CONFIG_TARGET_BA10_TV_BOX) += dram_sun4i_384_1024_iow8.o obj-$(CONFIG_TARGET_BANANAPI) += dram_bananapi.o obj-$(CONFIG_TARGET_BANANAPRO) += dram_bananapi.o -obj-$(CONFIG_TARGET_CHUWI_V7_CW0825) += dram_sun4i_408_1024_iow16.o -obj-$(CONFIG_TARGET_CUBIEBOARD) += dram_sun4i_auto.o obj-$(CONFIG_TARGET_CUBIEBOARD2) += dram_cubieboard2.o obj-$(CONFIG_TARGET_CUBIETRUCK) += dram_cubietruck.o obj-$(CONFIG_TARGET_I12_TVBOX) += dram_sun7i_384_1024_iow16.o -obj-$(CONFIG_TARGET_MELE_A1000) += dram_sun4i_auto.o obj-$(CONFIG_TARGET_MELE_M3) += dram_sun7i_384_1024_iow16.o -obj-$(CONFIG_TARGET_MINI_X) += dram_sun4i_auto.o obj-$(CONFIG_TARGET_MSI_PRIMO73) += dram_sun7i_384_1024_iow16.o -obj-$(CONFIG_TARGET_PCDUINO) += dram_sun4i_auto.o obj-$(CONFIG_TARGET_PCDUINO3) += dram_linksprite_pcduino3.o obj-$(CONFIG_TARGET_QT840A) += dram_sun7i_384_512_busw16_iow16.o obj-$(CONFIG_TARGET_R7DONGLE) += dram_r7dongle.o
board/sunxi/dram_a10_olinuxino_l.c deleted +0 -31
@@ -1,31 +0,0 @@ -/* this file is generated, don't edit it yourself */ - -#include <common.h> -#include <asm/arch/dram.h> - -static struct dram_para dram_para = { - .clock =480 , - .type =3 , - .rank_num =1 , - .density =4096 , - .io_width =16 , - .bus_width =16 , - .cas =6 , - .zq =123 , - .odt_en =0 , - .size =512 , - .tpr0 =0x30926692 , - .tpr1 =0x1090 , - .tpr2 =0x1a0c8 , - .tpr3 =0 , - .tpr4 =0 , - .tpr5 =0 , - .emr1 =0x4 , - .emr2 =0 , - .emr3 =0 , -}; - -unsigned long sunxi_dram_init (void ) -{ -return dramc_init (&dram_para); -}
board/sunxi/dram_sun4i_384_1024_iow8.c deleted +0 -31
@@ -1,31 +0,0 @@ -/* this file is generated, don't edit it yourself */ - -#include <common.h> -#include <asm/arch/dram.h> - -static struct dram_para dram_para = { - .clock =384 , - .type =3 , - .rank_num =1 , - .density =2048 , - .io_width =8 , - .bus_width =32 , - .cas =6 , - .zq =123 , - .odt_en =0 , - .size =1024 , - .tpr0 =0x30926692 , - .tpr1 =0x1090 , - .tpr2 =0x1a0c8 , - .tpr3 =0 , - .tpr4 =0 , - .tpr5 =0 , - .emr1 =0x4 , - .emr2 =0 , - .emr3 =0 , -}; - -unsigned long sunxi_dram_init (void ) -{ -return dramc_init (&dram_para); -}
board/sunxi/dram_sun4i_408_1024_iow16.c deleted +0 -31
@@ -1,31 +0,0 @@ -/* this file is generated, don't edit it yourself */ - -#include <common.h> -#include <asm/arch/dram.h> - -static struct dram_para dram_para = { - .clock =408 , - .type =3 , - .rank_num =1 , - .density =4096 , - .io_width =16 , - .bus_width =32 , - .cas =6 , - .zq =123 , - .odt_en =0 , - .size =1024 , - .tpr0 =0x30926692 , - .tpr1 =0x1090 , - .tpr2 =0x1a0c8 , - .tpr3 =0 , - .tpr4 =0 , - .tpr5 =0 , - .emr1 =0x4 , - .emr2 =0 , - .emr3 =0 , -}; - -unsigned long sunxi_dram_init (void ) -{ -return dramc_init (&dram_para); -}
configs/A10-OLinuXino-Lime_defconfig +3 -0
@@ -5,3 +5,6 @@ CONFIG_FDTFILE="sun4i-a10-olinuxino-lime.dtb" +S:CONFIG_ARCH_SUNXI=y +S:CONFIG_MACH_SUN4I=y +S:CONFIG_TARGET_A10_OLINUXINO_L=y ++S:CONFIG_DRAM_CLK=480 ++S:CONFIG_DRAM_ZQ=123 ++S:CONFIG_DRAM_EMR1=4
configs/Chuwi_V7_CW0825_defconfig +3 -0
@@ -12,3 +12,6 @@ CONFIG_VIDEO_LCD_PANEL_HITACHI_TX18D42VM=y +S:CONFIG_ARCH_SUNXI=y +S:CONFIG_MACH_SUN4I=y +S:CONFIG_TARGET_CHUWI_V7_CW0825=y ++S:CONFIG_DRAM_CLK=408 ++S:CONFIG_DRAM_ZQ=123 ++S:CONFIG_DRAM_EMR1=4
configs/ba10_tv_box_defconfig +3 -0
@@ -6,3 +6,6 @@ CONFIG_USB2_VBUS_PIN="PH12" +S:CONFIG_ARCH_SUNXI=y +S:CONFIG_MACH_SUN4I=y +S:CONFIG_TARGET_BA10_TV_BOX=y ++S:CONFIG_DRAM_CLK=384 ++S:CONFIG_DRAM_ZQ=123 ++S:CONFIG_DRAM_EMR1=4
Signature · 1 line
2.1.0
PATCH 5/9 sunxi: Convert sun4i boards to use auto dram configuration
Quoted 6 lines · Hans de Goede
Currently we've separate detailed dram settings for all sun4i boards, this moves them over to using auto dram configuration so that we can get rid of all the per board
dram_foo.cfiles.This been tested on a A10-OLinuXino-Lime,
Chuwi_V7_CW0825andba10_tv_box.
Unless I'm mistaken that's one for each of the dram_*.c removed, good.
Quoted 1 line
Signed-off-by Hans de Goede <[email protected]>
PATCH 6/9 sunxi: Remove CONFIG_TARGET_FOO for sun4i, sun6i and sun8i boards
In reply to Hans de GoedeCONFIG_TARGET_FOO is only used in board/sunxi/Makefile to select the dram config for sun5i and sun7i boards and in board/sunxi/gmac.c for some special handling of the bananapi/bananapro (both sun7i), iow it is not used at all on any sun4i, sun6i and sun8i boards so lets get rid of it there.
--- board/sunxi/Kconfig | 57 ------------------------------------ configs/A10-OLinuXino-Lime_defconfig | 1 - configs/CSQ_CS908_defconfig | 1 - configs/Chuwi_V7_CW0825_defconfig | 1 - configs/Colombus_defconfig | 1 - configs/Cubieboard_defconfig | 1 - configs/Hummingbird_A31_defconfig | 1 - configs/Linksprite_pcDuino_defconfig | 1 - configs/MSI_Primo81_defconfig | 10 ++++++- configs/Mele_A1000_defconfig | 1 - configs/Mele_M9_defconfig | 1 - configs/Mini-X_defconfig | 1 - configs/ba10_tv_box_defconfig | 1 - 13 files changed, 9 insertions(+), 69 deletions(-)
board/sunxi/Kconfig +0 -57
@@ -75,10 +75,6 @@ config SYS_CONFIG_NAME choice prompt "Board" -config TARGET_A10_OLINUXINO_L - bool "A10_OLINUXINO_L" - depends on MACH_SUN4I - config TARGET_A10S_OLINUXINO_M bool "A10S_OLINUXINO_M" depends on MACH_SUN5I
@@ -115,58 +111,22 @@ config TARGET_BANANAPRO bool "BANANAPRO" depends on MACH_SUN7I -config TARGET_CHUWI_V7_CW0825 - bool "CHUWI_V7_CW0825" - depends on MACH_SUN4I - -config TARGET_COLOMBUS - bool "COLOMBUS" - depends on MACH_SUN6I - config TARGET_CUBIEBOARD2 bool "CUBIEBOARD2" depends on MACH_SUN7I -config TARGET_CUBIEBOARD - bool "CUBIEBOARD" - depends on MACH_SUN4I - config TARGET_CUBIETRUCK bool "CUBIETRUCK" depends on MACH_SUN7I -config TARGET_HUMMINGBIRD_A31 - bool "HUMMINGBIRD_A31" - depends on MACH_SUN6I - -config TARGET_IPPO_Q8H_V5 - bool "IPPO_Q8H_V5" - depends on MACH_SUN8I - -config TARGET_PCDUINO - bool "PCDUINO" - depends on MACH_SUN4I - config TARGET_PCDUINO3 bool "PCDUINO3" depends on MACH_SUN7I -config TARGET_MELE_A1000 - bool "MELE_A1000" - depends on MACH_SUN4I - config TARGET_MELE_M3 bool "MELE_M3" depends on MACH_SUN7I -config TARGET_MELE_M9 - bool "MELE_M9" - depends on MACH_SUN6I - -config TARGET_MINI_X - bool "MINI_X" - depends on MACH_SUN4I - config TARGET_MSI_PRIMO73 bool "MSI Primo73 (7\" tablet)" depends on MACH_SUN7I
@@ -180,23 +140,6 @@ config TARGET_MSI_PRIMO73 OTG and 3.5mm headphone jack. More details are available at http://linux-sunxi.org/MSI_Primo73 -config TARGET_MSI_PRIMO81 - bool "MSI Primo81 (7.85\" tablet)" - depends on MACH_SUN6I - ---help--- - The MSI Primo81 is an A31s based tablet, with 1G RAM, 16G NAND, - 1024x768 IPS LCD display, mono speaker, 0.3 MP front camera, 2.0 MP - rear camera, 3500 mAh battery, gt911 touchscreen, mma8452 accelerometer - and rtl8188etv usb wifi. Has "power", "volume+" and "volume-" buttons - (both volume buttons are also connected to the UBOOT_SEL pin). The - external connectors are represented by MicroSD slot, MiniHDMI, MicroUSB - OTG and 3.5mm headphone jack. More details are available at - http://linux-sunxi.org/MSI_Primo81 - -config TARGET_BA10_TV_BOX - bool "BA10_TV_BOX" - depends on MACH_SUN4I - config TARGET_I12_TVBOX bool "I12_TVBOX" depends on MACH_SUN7I
configs/A10-OLinuXino-Lime_defconfig +0 -1
@@ -4,7 +4,6 @@ CONFIG_FDTFILE="sun4i-a10-olinuxino-lime.dtb" +S:CONFIG_ARM=y +S:CONFIG_ARCH_SUNXI=y +S:CONFIG_MACH_SUN4I=y -+S:CONFIG_TARGET_A10_OLINUXINO_L=y +S:CONFIG_DRAM_CLK=480 +S:CONFIG_DRAM_ZQ=123 +S:CONFIG_DRAM_EMR1=4
configs/CSQ_CS908_defconfig +0 -1
@@ -4,7 +4,6 @@ CONFIG_FDTFILE="sun6i-a31s-cs908.dtb" +S:CONFIG_ARM=y +S:CONFIG_ARCH_SUNXI=y +S:CONFIG_MACH_SUN6I=y -+S:CONFIG_TARGET_CSQ_CS908=y +S:CONFIG_DRAM_CLK=432 +S:CONFIG_DRAM_ZQ=123 # Ethernet phy power
configs/Chuwi_V7_CW0825_defconfig +0 -1
@@ -11,7 +11,6 @@ CONFIG_VIDEO_LCD_PANEL_HITACHI_TX18D42VM=y +S:CONFIG_ARM=y +S:CONFIG_ARCH_SUNXI=y +S:CONFIG_MACH_SUN4I=y -+S:CONFIG_TARGET_CHUWI_V7_CW0825=y +S:CONFIG_DRAM_CLK=408 +S:CONFIG_DRAM_ZQ=123 +S:CONFIG_DRAM_EMR1=4
configs/Colombus_defconfig +0 -1
@@ -4,7 +4,6 @@ CONFIG_FDTFILE="sun6i-a31-colombus.dtb" +S:CONFIG_ARM=y +S:CONFIG_ARCH_SUNXI=y +S:CONFIG_MACH_SUN6I=y -+S:CONFIG_TARGET_COLOMBUS=y +S:CONFIG_DRAM_CLK=240 +S:CONFIG_DRAM_ZQ=251 # Wifi power
configs/Cubieboard_defconfig +0 -1
@@ -4,7 +4,6 @@ CONFIG_FDTFILE="sun4i-a10-cubieboard.dtb" +S:CONFIG_ARM=y +S:CONFIG_ARCH_SUNXI=y +S:CONFIG_MACH_SUN4I=y -+S:CONFIG_TARGET_CUBIEBOARD=y +S:CONFIG_DRAM_CLK=480 +S:CONFIG_DRAM_ZQ=123 +S:CONFIG_DRAM_EMR1=0
configs/Hummingbird_A31_defconfig +0 -1
@@ -6,7 +6,6 @@ CONFIG_VIDEO_VGA_EXTERNAL_DAC_EN="PH25" +S:CONFIG_ARM=y +S:CONFIG_ARCH_SUNXI=y +S:CONFIG_MACH_SUN6I=y -+S:CONFIG_TARGET_HUMMINGBIRD_A31=y +S:CONFIG_DRAM_CLK=312 +S:CONFIG_DRAM_ZQ=251 # Wifi power
configs/Linksprite_pcDuino_defconfig +0 -1
@@ -4,7 +4,6 @@ CONFIG_FDTFILE="sun4i-a10-pcduino.dtb" +S:CONFIG_ARM=y +S:CONFIG_ARCH_SUNXI=y +S:CONFIG_MACH_SUN4I=y -+S:CONFIG_TARGET_PCDUINO=y +S:CONFIG_DRAM_CLK=408 +S:CONFIG_DRAM_ZQ=123 +S:CONFIG_DRAM_EMR1=0
configs/MSI_Primo81_defconfig +9 -1
@@ -1,3 +1,12 @@ +# The MSI Primo81 is an A31s based tablet, with 1G RAM, 16G NAND, +# 1024x768 IPS LCD display, mono speaker, 0.3 MP front camera, 2.0 MP +# rear camera, 3500 mAh battery, gt911 touchscreen, mma8452 accelerometer +# and rtl8188etv usb wifi. Has "power", "volume+" and "volume-" buttons +# (both volume buttons are also connected to the UBOOT_SEL pin). The +# external connectors are represented by MicroSD slot, MiniHDMI, MicroUSB +# OTG and 3.5mm headphone jack. More details are available at +# http://linux-sunxi.org/MSI_Primo81 + CONFIG_SPL=y CONFIG_SYS_EXTRA_OPTIONS="" CONFIG_FDTFILE="sun6i-a31s-primo81.dtb"
@@ -5,7 +14,6 @@ CONFIG_USB_KEYBOARD=n +S:CONFIG_ARM=y +S:CONFIG_ARCH_SUNXI=y +S:CONFIG_MACH_SUN6I=y -+S:CONFIG_TARGET_MSI_PRIMO81=y +S:CONFIG_DRAM_CLK=360 +S:CONFIG_DRAM_ZQ=122 # Wifi power
configs/Mele_A1000_defconfig +0 -1
@@ -5,7 +5,6 @@ CONFIG_VIDEO_VGA=y +S:CONFIG_ARM=y +S:CONFIG_ARCH_SUNXI=y +S:CONFIG_MACH_SUN4I=y -+S:CONFIG_TARGET_MELE_A1000=y +S:CONFIG_DRAM_CLK=360 +S:CONFIG_DRAM_ZQ=123 +S:CONFIG_DRAM_EMR1=0
configs/Mele_M9_defconfig +0 -1
@@ -4,7 +4,6 @@ CONFIG_FDTFILE="sun6i-a31-m9.dtb" +S:CONFIG_ARM=y +S:CONFIG_ARCH_SUNXI=y +S:CONFIG_MACH_SUN6I=y -+S:CONFIG_TARGET_MELE_M9=y +S:CONFIG_DRAM_CLK=312 +S:CONFIG_DRAM_ZQ=120 # The Mele M9 uses 3.3V for general IO
configs/Mini-X_defconfig +0 -1
@@ -4,7 +4,6 @@ CONFIG_FDTFILE="sun4i-a10-mini-xplus.dtb" +S:CONFIG_ARM=y +S:CONFIG_ARCH_SUNXI=y +S:CONFIG_MACH_SUN4I=y -+S:CONFIG_TARGET_MINI_X=y +S:CONFIG_DRAM_CLK=360 +S:CONFIG_DRAM_ZQ=123 +S:CONFIG_DRAM_EMR1=0
configs/ba10_tv_box_defconfig +0 -1
@@ -5,7 +5,6 @@ CONFIG_USB2_VBUS_PIN="PH12" +S:CONFIG_ARM=y +S:CONFIG_ARCH_SUNXI=y +S:CONFIG_MACH_SUN4I=y -+S:CONFIG_TARGET_BA10_TV_BOX=y +S:CONFIG_DRAM_CLK=384 +S:CONFIG_DRAM_ZQ=123 +S:CONFIG_DRAM_EMR1=4
Signature · 1 line
2.1.0
PATCH 6/9 sunxi: Remove CONFIG_TARGET_FOO for sun4i, sun6i and sun8i boards
Quoted 4 lines · Hans de Goede
CONFIG_TARGET_FOOis only used in board/sunxi/Makefile to select the dram config for sun5i and sun7i boards and inboard/sunxi/gmac.cfor some special handling of the bananapi/bananapro (both sun7i), iow it is not used at all on any sun4i, sun6i and sun8i boards so lets get rid of it there.
How close are we to being able to do the same for sun5i and/or sun7i?
The banana* stuff probably ought to become CONFIG_SUNXI_GMAX_DELAY (or whatever it was, you've told me like three times now but I can't seem to retain it...) sooner rather than later.
Ian.
PATCH 6/9 sunxi: Remove CONFIG_TARGET_FOO for sun4i, sun6i and sun8i boards
Quoted 11 lines · Ian Campbell
Quoted 4 lines · Hans de Goede
CONFIG_TARGET_FOOis only used in board/sunxi/Makefile to select the dram config for sun5i and sun7i boards and inboard/sunxi/gmac.cfor some special handling of the bananapi/bananapro (both sun7i), iow it is not used at all on any sun4i, sun6i and sun8i boards so lets get rid of it there.How close are we to being able to do the same for sun5i and/or sun7i?
The banana* stuff probably ought to become
CONFIG_SUNXI_GMAX_DELAY(or whatever it was, you've told me like three times now but I can't seem to retain it...) sooner rather than later.
Oh, forgot the most important bit ;-)
Ian.
PATCH 6/9 sunxi: Remove CONFIG_TARGET_FOO for sun4i, sun6i and sun8i boards
In reply to Ian CampbellHi,
Quoted 7 lines · Ian Campbell
Quoted 4 lines · Hans de Goede
CONFIG_TARGET_FOOis only used in board/sunxi/Makefile to select the dram config for sun5i and sun7i boards and inboard/sunxi/gmac.cfor some special handling of the bananapi/bananapro (both sun7i), iow it is not used at all on any sun4i, sun6i and sun8i boards so lets get rid of it there.How close are we to being able to do the same for sun5i and/or sun7i?
For sun5i it is a matter of me sitting down, doing the work, then testing on all the boards, then submit to the list for review.
For sun7i it is more or less the same, except that I do not own 1 or 2 supported sun7i boards, but I guess it is safe to say that if autoconfig works for all the boards I do own that it will work on the one I do not own also, never the less when I get around to this I'll also ask the MAINTAINERS to test.
Quoted 3 lines
The banana* stuff probably ought to become
CONFIG_SUNXI_GMAX_DELAY(or whatever it was, you've told me like three times now but I can't seem to retain it...) sooner rather than later.
Ack, this is all a matter of spending the time to make the necessary changes.
I did the sun4i work now, because I wanted to clean up the sun4i stuff before adding more sun4i boards.
Regards,
Hans
PATCH 7/9 sunxi: Add mk802 board / defconfig
In reply to Hans de GoedeThe mk802 is the "classic" Allwinner A10 based hdmi tv-stick, it features 512M or 1G RAM, 4G nand, a mini-hdmi female connector, USB-A receptacle, mini-usb receptacle (OTG) and USB-wifi. Somewhat unique the mk802 does not use the AXP209 pmic, it does not have a pmic at all.
For more details see: http://linux-sunxi.org/Rikomagic_mk802
--- configs/mk802_defconfig | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 configs/mk802_defconfig
configs/mk802_defconfig new file +10 -0
@@ -0,0 +1,10 @@ +CONFIG_SPL=y +CONFIG_SYS_EXTRA_OPTIONS="USB_EHCI" +CONFIG_FDTFILE="sun4i-a10-mk802.dtb" +CONFIG_USB2_VBUS_PIN="PH12" ++S:CONFIG_ARM=y ++S:CONFIG_ARCH_SUNXI=y ++S:CONFIG_MACH_SUN4I=y ++S:CONFIG_DRAM_CLK=360 ++S:CONFIG_DRAM_ZQ=123 ++S:CONFIG_DRAM_EMR1=0
Signature · 1 line
2.1.0
PATCH 7/9 sunxi: Add mk802 board / defconfig
Quoted 8 lines · Hans de Goede
The mk802 is the "classic" Allwinner A10 based hdmi tv-stick, it features 512M or 1G RAM, 4G nand, a mini-hdmi female connector, USB-A receptacle, mini-usb receptacle (OTG) and USB-wifi. Somewhat unique the mk802 does not use the AXP209 pmic, it does not have a pmic at all.
For more details see: http://linux-sunxi.org/Rikomagic_mk802
Signed-off-by Hans de Goede <[email protected]>
For the three mk802* patches (#7..#9), iff you add MAINTAINERS entries, then:
Ian.
PATCH 7/9 sunxi: Add mk802 board / defconfig
Hi,
Quoted 6 lines · Ian Campbell
Quoted 5 lines · Hans de Goede
The mk802 is the "classic" Allwinner A10 based hdmi tv-stick, it features 512M or 1G RAM, 4G nand, a mini-hdmi female connector, USB-A receptacle, mini-usb receptacle (OTG) and USB-wifi. Somewhat unique the mk802 does not use the AXP209 pmic, it does not have a pmic at all.
Quoted 7 lines
Quoted 3 lines
For more details see: http://linux-sunxi.org/Rikomagic_mk802
Signed-off-by Hans de Goede <[email protected]>For the three mk802* patches (#7..#9), iff you add
MAINTAINERSentries, then:Acked-by Ian Campbell <[email protected]>
Gah, will I ever learn :)
Thanks for all the reviews, I've just pushed this set + the patches you acked from the A80 set (will do a v2 of the others later) + Siarhei's display patches + the marsboard defconfig to u-boot-sunxi/next, the plan is to rebase on top of origin/master as soon as Tom pulls from u-boot-usb, add in the OTG enable patch and then send another pull-req, as we've build up a nice set of patches again already.
Regards,
Hans
PATCH 8/9 sunxi: Add mk802ii board / defconfig
In reply to Hans de GoedeThe mk802ii is a revised version of the mk802 A10 based hdmi tv-stick, it features 1G RAM, 4G nand, a hdmi male connector, USB-A receptacle, 2 micro usb receptacles (OTG & power) and USB-wifi, and does come with an axp209 pmic.
For more details see: http://linux-sunxi.org/Rikomagic_mk802ii
--- configs/mk802ii_defconfig | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 configs/mk802ii_defconfig
configs/mk802ii_defconfig new file +9 -0
@@ -0,0 +1,9 @@ +CONFIG_SPL=y +CONFIG_SYS_EXTRA_OPTIONS="AXP209_POWER,USB_EHCI" +CONFIG_FDTFILE="sun4i-a10-mk802ii.dtb" ++S:CONFIG_ARM=y ++S:CONFIG_ARCH_SUNXI=y ++S:CONFIG_MACH_SUN4I=y ++S:CONFIG_DRAM_CLK=360 ++S:CONFIG_DRAM_ZQ=123 ++S:CONFIG_DRAM_EMR1=0
Signature · 1 line
2.1.0
PATCH 9/9 sunxi: Add mk802_a10s board / defconfig
In reply to Hans de GoedeThe mk802_a10s re-uses is the "classic" mk802 case and functionality, but has an A10s SoC inside rather then the A10, it features 512M or 1G RAM, 4G nand, a mini-hdmi female connector, USB-A receptacle, mini-usb receptacle (OTG) and a sdio realtek wifi chip. Unlike the original mk802 it does have a pmic, the axp152.
For more details see: http://linux-sunxi.org/Semitime_g2
--- board/sunxi/Kconfig | 4 ++++ board/sunxi/Makefile | 1 + board/sunxi/dram_sun5i_auto.c | 31 +++++++++++++++++++++++++++++++ configs/mk802_a10s_defconfig | 11 +++++++++++ 4 files changed, 47 insertions(+) create mode 100644 board/sunxi/dram_sun5i_auto.c create mode 100644 configs/mk802_a10s_defconfig
board/sunxi/Kconfig +4 -0
@@ -127,6 +127,10 @@ config TARGET_MELE_M3 bool "MELE_M3" depends on MACH_SUN7I +config TARGET_MK802_A10S + bool "MK802_A10S" + depends on MACH_SUN5I + config TARGET_MSI_PRIMO73 bool "MSI Primo73 (7\" tablet)" depends on MACH_SUN7I
board/sunxi/Makefile +1 -0
@@ -26,6 +26,7 @@ obj-$(CONFIG_TARGET_CUBIEBOARD2) += dram_cubieboard2.o obj-$(CONFIG_TARGET_CUBIETRUCK) += dram_cubietruck.o obj-$(CONFIG_TARGET_I12_TVBOX) += dram_sun7i_384_1024_iow16.o obj-$(CONFIG_TARGET_MELE_M3) += dram_sun7i_384_1024_iow16.o +obj-$(CONFIG_TARGET_MK802_A10S) += dram_sun5i_auto.o obj-$(CONFIG_TARGET_MSI_PRIMO73) += dram_sun7i_384_1024_iow16.o obj-$(CONFIG_TARGET_PCDUINO3) += dram_linksprite_pcduino3.o obj-$(CONFIG_TARGET_QT840A) += dram_sun7i_384_512_busw16_iow16.o
board/sunxi/dram_sun5i_auto.c new file +31 -0
@@ -0,0 +1,31 @@ +/* this file is generated, don't edit it yourself */ + +#include <common.h> +#include <asm/arch/dram.h> + +static struct dram_para dram_para = { + .clock =CONFIG_DRAM_CLK , + .type =3 , + .rank_num =1 , + .density =0 , + .io_width =0 , + .bus_width =0 , + .cas =9 , + .zq =CONFIG_DRAM_ZQ , + .odt_en =0 , + .size =0 , + .tpr0 =0x42d899b7 , + .tpr1 =0xa090 , + .tpr2 =0x22a00 , + .tpr3 =0 , + .tpr4 =0 , + .tpr5 =0 , + .emr1 =CONFIG_DRAM_EMR1 , + .emr2 =0x10 , + .emr3 =0 , +}; + +unsigned long sunxi_dram_init (void ) +{ +return dramc_init (&dram_para); +}
configs/mk802_a10s_defconfig new file +11 -0
@@ -0,0 +1,11 @@ +CONFIG_SPL=y +CONFIG_SYS_EXTRA_OPTIONS="AXP152_POWER,USB_EHCI" +CONFIG_FDTFILE="sun5i-a10s-mk802.dtb" +CONFIG_USB1_VBUS_PIN="PB10" ++S:CONFIG_ARM=y ++S:CONFIG_ARCH_SUNXI=y ++S:CONFIG_MACH_SUN5I=y ++S:CONFIG_TARGET_MK802_A10S=y ++S:CONFIG_DRAM_CLK=432 ++S:CONFIG_DRAM_ZQ=123 ++S:CONFIG_DRAM_EMR1=0
Signature · 1 line
2.1.0
PATCH 1/9 sunxi: axp209: Disable interrupts when intializing the axp209
In reply to Hans de GoedeQuoted 6 lines · Hans de Goede
We do not use the axp209 interrupt, and at least in my mini-x (which does not have a power button) the pwr-button pin and the irq pin are soldered together, so if the axp209 keeps it irq asserted to long it will see a 10s pwr-button press and hard power off the board, disabling the irqs fixes this.
Signed-off-by Hans de Goede <[email protected]>