From: Hans de Goede <hdegoede@redhat.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v2] sunxi: power: add support for sy8106a driver
Date: Tue, 23 Feb 2016 20:42:12 +0100 [thread overview]
Message-ID: <56CCB614.2000600@redhat.com> (raw)
In-Reply-To: <1456249639-22744-1-git-send-email-jelle@vdwaa.nl>
Hi,
On 02/23/2016 06:47 PM, Jelle van der Waa wrote:
> SY8106A is a PMIC which is used on the Allwinner
> H3 Orange Pi Pc and Plus board. The VOUT1_SEL register is
> implemented to set the default V-CPU voltage to 1200 mV.
>
> This driver is required to retain the SY8106A V-CPU
> voltage after a software reset. On cold boot the default
> SY8106A output voltage is selected by a pair of resistors
> and happens to be 1.2V on the Orange Pi PC and Plus.
>
> Signed-off-by: Jelle van der Waa <jelle@vdwaa.nl>
> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
> Tested-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
> Acked-by: Siarhei Siamashka <siarhei.siamashka@gmail.com>
>
> ---
> Changes in v2
> - Fixed typo in commit message thea => the.
> - Made config R_I2C_ENABLE depend on SY8106A_POWER.
> - Removed 'default n' from config R_I2C_ENABLE
> - Changed SY8106A_POWER description from "most" to "some" boards.
> - Added license/copyright to include/sy8106a.h and
> drivers/power/sy8106a.c.
Thanks, I've merged this (with a slightly improved commit msg)
into my tree and it will be part of my next pull-req.
Regards,
Hans
> ---
> board/sunxi/Kconfig | 5 ++++-
> board/sunxi/board.c | 5 +++++
> configs/orangepi_pc_defconfig | 2 +-
> drivers/power/Kconfig | 16 ++++++++++++++++
> drivers/power/Makefile | 1 +
> drivers/power/sy8106a.c | 29 +++++++++++++++++++++++++++++
> include/configs/sunxi-common.h | 6 ++++--
> include/sy8106a.h | 11 +++++++++++
> 8 files changed, 71 insertions(+), 4 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..5e9d3af 100644
> --- a/board/sunxi/Kconfig
> +++ b/board/sunxi/Kconfig
> @@ -372,11 +372,14 @@ 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 SY8106A_POWER
> ---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 <asm/io.h>
> #include <nand.h>
> #include <net.h>
> +#include <sy8106a.h>
>
> #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..29a8da6 100644
> --- a/configs/orangepi_pc_defconfig
> +++ b/configs/orangepi_pc_defconfig
> @@ -12,4 +12,4 @@ CONFIG_SPL=y
> # CONFIG_CMD_FLASH is not set
> # CONFIG_CMD_FPGA is not set
> CONFIG_CMD_GPIO=y
> -CONFIG_R_I2C_ENABLE=y
> +CONFIG_SY8106A_POWER=y
> diff --git a/drivers/power/Kconfig b/drivers/power/Kconfig
> index 10683a2..adc6455 100644
> --- a/drivers/power/Kconfig
> +++ b/drivers/power/Kconfig
> @@ -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 some
> + 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..bbf116f
> --- /dev/null
> +++ b/drivers/power/sy8106a.c
> @@ -0,0 +1,29 @@
> +/*
> + * (C) Copyright 2016
> + * Jelle van der Waa <jelle@vdwaa.nl>
> + *
> + * SPDX-License-Identifier: GPL-2.0+
> + */
> +#include <common.h>
> +#include <i2c.h>
> +#include <sy8106a.h>
> +
> +#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..32e8c43
> --- /dev/null
> +++ b/include/sy8106a.h
> @@ -0,0 +1,11 @@
> +/*
> + * (C) Copyright 2016
> + * Jelle van der Waa <jelle@vdwaa.nl>
> + *
> + * SPDX-License-Identifier: GPL-2.0+
> + */
> +#ifndef _SY8106A_PMIC_H_
> +
> +int sy8106a_set_vout1(unsigned int mvolt);
> +
> +#endif
>
prev parent reply other threads:[~2016-02-23 19:42 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-02-23 17:47 [U-Boot] [PATCH v2] sunxi: power: add support for sy8106a driver Jelle van der Waa
2016-02-23 19:42 ` Hans de Goede [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=56CCB614.2000600@redhat.com \
--to=hdegoede@redhat.com \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.