public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Siarhei Siamashka <siarhei.siamashka@gmail.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v4] sun6i: Add basic axp221 driver
Date: Fri, 2 Jan 2015 07:17:36 +0200	[thread overview]
Message-ID: <20150102071736.69106651@i7> (raw)
In-Reply-To: <1415625111-3453-1-git-send-email-hdegoede@redhat.com>

On Mon, 10 Nov 2014 14:11:51 +0100
Hans de Goede <hdegoede@redhat.com> wrote:

> From: Oliver Schinagl <oliver@schinagl.nl>
> 
> The A31 uses the AXP221 pmic for various voltages.
> 
> Signed-off-by: Oliver Schinagl <oliver@schinagl.nl>
> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
> --
> Changes in v2:
> -Rebase
> Changes in v3:
> -Add support for all dldo and aldo-s
> -Add Kconfig option to select building AXP221 and to select voltage of
>  dldo and aldo-s
> Changes in v4:
> -Add axp221_setbits helper function
> -Use symbolic names for enabled bits in CTRL1 - CTRL3 registers
> ---

[...]

> diff --git a/include/axp221.h b/include/axp221.h
> new file mode 100644
> index 0000000..e3b4409
> --- /dev/null
> +++ b/include/axp221.h
> @@ -0,0 +1,50 @@
> +/*
> + * (C) Copyright 2013 Oliver Schinagl <oliver@schinagl.nl>
> + *
> + * X-Powers AXP221 Power Management IC driver
> + *
> + * SPDX-License-Identifier:	GPL-2.0+
> + */
> +
> +#define AXP221_CHIP_ADDR 0x68
> +#define AXP221_CTRL_ADDR 0x3e
> +#define AXP221_INIT_DATA 0x3e
> +
> +#define AXP221_CHIP_ID		0x03
> +#define AXP221_OUTPUT_CTRL1	0x10
> +#define AXP221_OUTPUT_CTRL1_ALDO1_EN	(1 << 6)
> +#define AXP221_OUTPUT_CTRL1_ALDO2_EN	(1 << 7)
> +#define AXP221_OUTPUT_CTRL2	0x12
> +#define AXP221_OUTPUT_CTRL2_DLDO1_EN	(1 << 3)
> +#define AXP221_OUTPUT_CTRL2_DLDO2_EN	(1 << 4)
> +#define AXP221_OUTPUT_CTRL2_DLDO3_EN	(1 << 5)
> +#define AXP221_OUTPUT_CTRL2_DLDO4_EN	(1 << 6)
> +#define AXP221_OUTPUT_CTRL2_DCDC1_EN	(1 << 7)
> +#define AXP221_OUTPUT_CTRL3	0x13
> +#define AXP221_OUTPUT_CTRL3_ALDO3_EN	(1 << 7)
> +#define AXP221_DLDO1_CTRL	0x15
> +#define AXP221_DLDO2_CTRL	0x16
> +#define AXP221_DLDO3_CTRL	0x17
> +#define AXP221_DLDO4_CTRL	0x18
> +#define AXP221_DCDC1_CTRL	0x21
> +#define AXP221_DCDC2_CTRL	0x22
> +#define AXP221_DCDC3_CTRL	0x23
> +#define AXP221_DCDC4_CTRL	0x24
> +#define AXP221_DCDC5_CTRL	0x25
> +#define AXP221_ALDO1_CTRL	0x28
> +#define AXP221_ALDO2_CTRL	0x28

The register offset of ALDO2 seems to be incorrect here (same as ALDO1):
    http://linux-sunxi.org/AXP221#Reg_29h:_ALDO2_output_voltage

In the current u-boot master, ALDO2 is only used by:
configs/Mele_M9_defconfig:+S:CONFIG_AXP221_ALDO1_VOLT=3300

$ cat Mele_M9_defconfig 
CONFIG_SPL=y
CONFIG_SYS_EXTRA_OPTIONS="USB_EHCI,SUNXI_GMAC"
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
# Ethernet phy power
+S:CONFIG_AXP221_DLDO1_VOLT=3300
# USB hub power
+S:CONFIG_AXP221_DLDO4_VOLT=3300
# Wifi power
+S:CONFIG_AXP221_ALDO1_VOLT=3300
# HDMI power ?
+S:CONFIG_AXP221_ALDO2_VOLT=1800
+S:CONFIG_AXP221_ALDO3_VOLT=3000
# Vbus gpio for usb1
+S:CONFIG_USB1_VBUS_PIN="PC27"
# No Vbus gpio for usb2
+S:CONFIG_USB2_VBUS_PIN=""

It means that the code in "boards/sunxi/board.c" is likely to
set 1.8V for ALDO1 instead of 3.3V:

#if CONFIG_AXP221_ALDO1_VOLT != -1
	power_failed |= axp221_set_aldo1(CONFIG_AXP221_ALDO1_VOLT);
#endif
#if CONFIG_AXP221_ALDO2_VOLT != -1
	power_failed |= axp221_set_aldo2(CONFIG_AXP221_ALDO2_VOLT);
#endif

Does Wifi actually work on Mele M9? And if not, then is this
something that needs to be fixed in the v2015.01 release?

Also ALDO1/ALDO2 have much heavier use in the u-boot-sunxi
"next" branch.

> +#define AXP221_ALDO3_CTRL	0x2a
> +
> +int axp221_set_dcdc1(unsigned int mvolt);
> +int axp221_set_dcdc2(unsigned int mvolt);
> +int axp221_set_dcdc3(unsigned int mvolt);
> +int axp221_set_dcdc4(unsigned int mvolt);
> +int axp221_set_dcdc5(unsigned int mvolt);
> +int axp221_set_dldo1(unsigned int mvolt);
> +int axp221_set_dldo2(unsigned int mvolt);
> +int axp221_set_dldo3(unsigned int mvolt);
> +int axp221_set_dldo4(unsigned int mvolt);
> +int axp221_set_aldo1(unsigned int mvolt);
> +int axp221_set_aldo2(unsigned int mvolt);
> +int axp221_set_aldo3(unsigned int mvolt);
> +int axp221_init(void);

-- 
Best regards,
Siarhei Siamashka

  parent reply	other threads:[~2015-01-02  5:17 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-10 13:11 [U-Boot] [PATCH v4] sun6i: Add basic axp221 driver Hans de Goede
2014-11-10 13:20 ` Ian Campbell
2014-11-10 13:33   ` Hans de Goede
2014-11-10 14:13     ` Ian Campbell
2014-11-10 15:12       ` Hans de Goede
2015-01-02  5:17 ` Siarhei Siamashka [this message]
2015-01-05 15:45   ` Hans de Goede

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=20150102071736.69106651@i7 \
    --to=siarhei.siamashka@gmail.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox