From 662246c6eec1eb23e09cd0259be38f7181e65aae Mon Sep 17 00:00:00 2001 From: ThomasKaiser Date: Wed, 16 Mar 2016 19:32:05 +0100 Subject: [PATCH] Final H3 fixes for u-boot 2016.03 --- ...power-add-support-for-sy8106a-driver.patch | 194 ------------------ .../u-boot-99-opi-change-build-settings.patch | 29 +-- 2 files changed, 16 insertions(+), 207 deletions(-) delete mode 100644 patch/u-boot/u-boot-default/u-boot-00-sunxi-power-add-support-for-sy8106a-driver.patch diff --git a/patch/u-boot/u-boot-default/u-boot-00-sunxi-power-add-support-for-sy8106a-driver.patch b/patch/u-boot/u-boot-default/u-boot-00-sunxi-power-add-support-for-sy8106a-driver.patch deleted file mode 100644 index 0b419e3370..0000000000 --- a/patch/u-boot/u-boot-default/u-boot-00-sunxi-power-add-support-for-sy8106a-driver.patch +++ /dev/null @@ -1,194 +0,0 @@ -From: Jelle van der Waa - -SY8106A is a PMIC which is used on the Allwinner -H3 Orange Pi Pc board. The VOUT1_SEL register is -implemented to set thea default V-CPU voltage to 1200 mV. - -Signed-off-by: Jelle van der Waa -[hdegoede at redhat.com: Polish Kconfig parts a bit] -Signed-off-by: Hans de Goede ---- - board/sunxi/Kconfig | 6 +++++- - board/sunxi/board.c | 5 +++++ - configs/orangepi_pc_defconfig | 1 - - drivers/power/Kconfig | 18 +++++++++++++++++- - drivers/power/Makefile | 1 + - drivers/power/sy8106a.c | 23 +++++++++++++++++++++++ - include/configs/sunxi-common.h | 6 ++++-- - include/sy8106a.h | 5 +++++ - 8 files changed, 60 insertions(+), 5 deletions(-) - create mode 100644 drivers/power/sy8106a.c - create mode 100644 include/sy8106a.h - -diff --git a/board/sunxi/Kconfig b/board/sunxi/Kconfig -index a334aa3..449d9dd 100644 ---- a/board/sunxi/Kconfig -+++ b/board/sunxi/Kconfig -@@ -372,11 +372,15 @@ config I2C3_ENABLE - See I2C0_ENABLE help text. - endif - -+if SUNXI_GEN_SUN6I - config R_I2C_ENABLE - bool "Enable the PRCM I2C/TWI controller" -- default n -+ # This is used for the pmic on H3 -+ default y if MACH_SUN8I_H3 -+ default n if !MACH_SUN8I_H3 - ---help--- - Set this to y to enable the I2C controller which is part of the PRCM. -+endif - - if MACH_SUN7I - config I2C4_ENABLE -diff --git a/board/sunxi/board.c b/board/sunxi/board.c -index 420481a..15b7af6 100644 ---- a/board/sunxi/board.c -+++ b/board/sunxi/board.c -@@ -25,6 +25,7 @@ - #include - #include - #include -+#include - - #if defined CONFIG_VIDEO_LCD_PANEL_I2C && !(defined CONFIG_SPL_BUILD) - /* So that we can use pin names in Kconfig and sunxi_name_to_gpio() */ -@@ -436,6 +437,10 @@ void sunxi_board_init(void) - int power_failed = 0; - unsigned long ramsize; - -+#ifdef CONFIG_SY8106A_POWER -+ power_failed = sy8106a_set_vout1(CONFIG_SY8106A_VOUT1_VOLT); -+#endif -+ - #if defined CONFIG_AXP152_POWER || defined CONFIG_AXP209_POWER || \ - defined CONFIG_AXP221_POWER || defined CONFIG_AXP818_POWER - power_failed = axp_init(); -diff --git a/configs/orangepi_pc_defconfig b/configs/orangepi_pc_defconfig -index ea9ed87..358caa5 100644 ---- a/configs/orangepi_pc_defconfig -+++ b/configs/orangepi_pc_defconfig -@@ -12,4 +12,3 @@ CONFIG_SPL=y - # CONFIG_CMD_FLASH is not set - # CONFIG_CMD_FPGA is not set - CONFIG_CMD_GPIO=y --CONFIG_R_I2C_ENABLE=y -diff --git a/drivers/power/Kconfig b/drivers/power/Kconfig -index 10683a2..7fcf78e 100644 ---- a/drivers/power/Kconfig -+++ b/drivers/power/Kconfig -@@ -10,7 +10,7 @@ choice - default AXP209_POWER if MACH_SUN4I || MACH_SUN5I || MACH_SUN7I - default AXP221_POWER if MACH_SUN6I || MACH_SUN8I_A23 || MACH_SUN8I_A33 - default AXP818_POWER if MACH_SUN8I_A83T -- default SUNXI_NO_PMIC if MACH_SUN8I_H3 -+ default SY8106A_POWER if MACH_SUN8I_H3 - - config SUNXI_NO_PMIC - boolean "board without a pmic" -@@ -48,6 +48,13 @@ config AXP818_POWER - Say y here to enable support for the axp818 pmic found on - A83T dev board. - -+config SY8106A_POWER -+ boolean "SY8106A pmic support" -+ depends on MACH_SUN8I_H3 -+ ---help--- -+ Select this to enable support for the SY8106A pmic found on most -+ H3 boards. -+ - endchoice - - config AXP_DCDC1_VOLT -@@ -232,4 +239,13 @@ config AXP_ELDO3_VOLT - 1.2V for the SSD2828 chip (converter of parallel LCD interface - into MIPI DSI). - -+config SY8106A_VOUT1_VOLT -+ int "SY8106A pmic VOUT1 voltage" -+ depends on SY8106A_POWER -+ default 1200 -+ ---help--- -+ Set the voltage (mV) to program the SY8106A pmic VOUT1. This -+ is typically used to power the VDD-CPU and should be 1200mV. -+ Values can range from 680mV till 1950mV. -+ - endmenu -diff --git a/drivers/power/Makefile b/drivers/power/Makefile -index 0fdbca3..690faa0 100644 ---- a/drivers/power/Makefile -+++ b/drivers/power/Makefile -@@ -12,6 +12,7 @@ obj-$(CONFIG_AXP221_POWER) += axp221.o - obj-$(CONFIG_AXP818_POWER) += axp818.o - obj-$(CONFIG_EXYNOS_TMU) += exynos-tmu.o - obj-$(CONFIG_FTPMU010_POWER) += ftpmu010.o -+obj-$(CONFIG_SY8106A_POWER) += sy8106a.o - obj-$(CONFIG_TPS6586X_POWER) += tps6586x.o - obj-$(CONFIG_TWL4030_POWER) += twl4030.o - obj-$(CONFIG_TWL6030_POWER) += twl6030.o -diff --git a/drivers/power/sy8106a.c b/drivers/power/sy8106a.c -new file mode 100644 -index 0000000..6492ddd ---- /dev/null -+++ b/drivers/power/sy8106a.c -@@ -0,0 +1,23 @@ -+#include -+#include -+#include -+ -+#define SY8106A_I2C_ADDR 0x65 -+#define SY8106A_VOUT1_SEL 1 -+#define SY8106A_VOUT1_SEL_ENABLE (1 << 7) -+ -+static u8 sy8106a_mvolt_to_cfg(int mvolt, int min, int max, int div) -+{ -+ if (mvolt < min) -+ mvolt = min; -+ else if (mvolt > max) -+ mvolt = max; -+ -+ return (mvolt - min) / div; -+} -+ -+int sy8106a_set_vout1(unsigned int mvolt) -+{ -+ u8 data = sy8106a_mvolt_to_cfg(mvolt, 680, 1950, 10) | SY8106A_VOUT1_SEL_ENABLE; -+ return i2c_write(SY8106A_I2C_ADDR, SY8106A_VOUT1_SEL, 1, &data, 1); -+} -diff --git a/include/configs/sunxi-common.h b/include/configs/sunxi-common.h -index b4dfb3c..40850e5 100644 ---- a/include/configs/sunxi-common.h -+++ b/include/configs/sunxi-common.h -@@ -206,7 +206,8 @@ - #define CONFIG_SPL_STACK LOW_LEVEL_SRAM_STACK - - /* I2C */ --#if defined CONFIG_AXP152_POWER || defined CONFIG_AXP209_POWER -+#if defined CONFIG_AXP152_POWER || defined CONFIG_AXP209_POWER || \ -+ defined CONFIG_SY8106A_POWER - #define CONFIG_SPL_I2C_SUPPORT - #endif - -@@ -240,7 +241,8 @@ extern int soft_i2c_gpio_scl; - - /* PMU */ - #if defined CONFIG_AXP152_POWER || defined CONFIG_AXP209_POWER || \ -- defined CONFIG_AXP221_POWER || defined CONFIG_AXP818_POWER -+ defined CONFIG_AXP221_POWER || defined CONFIG_AXP818_POWER || \ -+ defined CONFIG_SY8106A_POWER - #define CONFIG_SPL_POWER_SUPPORT - #endif - -diff --git a/include/sy8106a.h b/include/sy8106a.h -new file mode 100644 -index 0000000..714c314 ---- /dev/null -+++ b/include/sy8106a.h -@@ -0,0 +1,5 @@ -+#ifndef _SY8106A_PMIC_H_ -+ -+int sy8106a_set_vout1(unsigned int mvolt); -+ -+#endif --- -2.5.0 diff --git a/patch/u-boot/u-boot-default/u-boot-99-opi-change-build-settings.patch b/patch/u-boot/u-boot-default/u-boot-99-opi-change-build-settings.patch index 9a3dc3a63c..fc621a0c01 100644 --- a/patch/u-boot/u-boot-default/u-boot-99-opi-change-build-settings.patch +++ b/patch/u-boot/u-boot-default/u-boot-99-opi-change-build-settings.patch @@ -16,24 +16,27 @@ diff -Nur a/configs/orangepi_h3_defconfig b/configs/orangepi_h3_defconfig +# CONFIG_CMD_FLASH is not set +# CONFIG_CMD_FPGA is not set +CONFIG_CMD_GPIO=y ++CONFIG_SY8106A_POWER=y ++CONFIG_USB_EHCI_HCD=y +CONFIG_DM=y +CONFIG_DM_GPIO=y -diff -Nur a/configs/orangepi_pc_defconfig b/configs/orangepi_pc_defconfig ---- a/configs/orangepi_pc_defconfig 2016-02-18 17:59:46.843681159 +0100 -+++ b/configs/orangepi_pc_defconfig 2016-02-19 00:58:41.071856141 +0100 -@@ -12,3 +12,5 @@ - # CONFIG_CMD_FLASH is not set - # CONFIG_CMD_FPGA is not set +diff --git a/configs/orangepi_pc_defconfig b/configs/orangepi_pc_defconfig +index aaf0f68..b389a0e 100644 +--- a/configs/orangepi_pc_defconfig ++++ b/configs/orangepi_pc_defconfig +@@ -14,3 +14,5 @@ CONFIG_SPL=y CONFIG_CMD_GPIO=y + CONFIG_SY8106A_POWER=y + CONFIG_USB_EHCI_HCD=y +CONFIG_DM=y +CONFIG_DM_GPIO=y -diff -Nur a/configs/orangepi_plus_defconfig b/configs/orangepi_plus_defconfig ---- a/configs/orangepi_plus_defconfig 2016-02-15 22:44:30.000000000 +0100 -+++ b/configs/orangepi_plus_defconfig 2016-02-19 00:59:04.440204776 +0100 -@@ -12,3 +12,6 @@ - # CONFIG_CMD_FLASH is not set - # CONFIG_CMD_FPGA is not set +diff --git a/configs/orangepi_plus_defconfig b/configs/orangepi_plus_defconfig +index e52dcfc..03a2687 100644 +--- a/configs/orangepi_plus_defconfig ++++ b/configs/orangepi_plus_defconfig +@@ -14,3 +14,5 @@ CONFIG_SPL=y CONFIG_CMD_GPIO=y + CONFIG_SY8106A_POWER=y + CONFIG_USB_EHCI_HCD=y +CONFIG_DM=y -+CONFIG_DM_GPIO=y +CONFIG_MMC_SUNXI_SLOT_EXTRA=2