All of lore.kernel.org
 help / color / mirror / Atom feed
From: Marek Vasut <marex@denx.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 3/4] sunxi: common VBUS detection logic in usbc
Date: Sun, 15 Mar 2015 19:19:52 +0100	[thread overview]
Message-ID: <201503151919.52419.marex@denx.de> (raw)
In-Reply-To: <1426440467-4525-3-git-send-email-contact@paulk.fr>

On Sunday, March 15, 2015 at 06:27:46 PM, Paul Kocialkowski wrote:
> VBUS detection could be needed not only by the musb code (to prevent host
> mode), but also by e.g. gadget drivers to start only when a cable is
> connected.
> 
> In addition, this allows more flexibility in vbus detection, as it could
> easily be extended to other USBC indexes. Eventually, this would help
> making musb support independent from a hardcoded USB controller index (0).
> 
> Signed-off-by: Paul Kocialkowski <contact@paulk.fr>

Hi!

[...]

> @@ -113,6 +120,17 @@ static int get_vbus_gpio(int index)
>  	return -1;
>  }
> 
> +static int get_vbus_detect_gpio(int index)
> +{
> +	if (use_axp_vbus_detect(index))
> +		return -1;
> +
> +	switch (index) {
> +	case 0: return sunxi_name_to_gpio(CONFIG_USB0_VBUS_DET);

What happens if the index != 0 here ? Default branch with some error
report might be a good idea here.

> +	}
> +	return -1;
> +}
> +

[...]

> @@ -270,3 +297,34 @@ void sunxi_usbc_vbus_disable(int index)
>  	if (sunxi_usbc->gpio_vbus != -1)
>  		gpio_direction_output(sunxi_usbc->gpio_vbus, 0);
>  }
> +
> +int sunxi_usbc_vbus_detect(int index)
> +{
> +	struct sunxi_usbc_hcd *sunxi_usbc = &sunxi_usbc_hcd[index];
> +	int err;
> +
> +#ifdef AXP_VBUS_DETECT

Can't you just wrap this ifdef into use_axp_vbus_detect(), so the
code isn't so riddled with the ifdeffery ?

> +	if (use_axp_vbus_detect(index)) {
> +		err = axp_get_vbus();
> +		if (err < 0)
> +			return err;
> +	} else {
> +#endif
> +		if (sunxi_usbc->gpio_vbus_det == -1) {
> +			eprintf("Error: invalid vbus detection pin\n");
> +			return -1;
> +		}
> +
> +		err = gpio_direction_input(sunxi_usbc->gpio_vbus_det);
> +		if (err)
> +			return err;
> +
> +		err = gpio_get_value(sunxi_usbc->gpio_vbus_det);
> +		if (err < 0)
> +			return err;
> +#ifdef AXP_VBUS_DETECT
> +	}
> +#endif
> +
> +	return err;

[...]

  reply	other threads:[~2015-03-15 18:19 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-03-15 17:27 [U-Boot] [PATCH 1/4] sunxi: musb: Return early on VBUS GPIO error instead of on a positive value Paul Kocialkowski
2015-03-15 17:27 ` [U-Boot] [PATCH 2/4] sunxi: Avoid any assumption between musb gadget and host but fallback to host Paul Kocialkowski
2015-03-21 13:14   ` Hans de Goede
2015-03-22 10:54     ` Paul Kocialkowski
2015-03-15 17:27 ` [U-Boot] [PATCH 3/4] sunxi: common VBUS detection logic in usbc Paul Kocialkowski
2015-03-15 18:19   ` Marek Vasut [this message]
2015-03-15 21:54     ` Paul Kocialkowski
2015-03-15 23:31       ` Marek Vasut
2015-03-21 13:15   ` Hans de Goede
2015-03-15 17:27 ` [U-Boot] [PATCH 4/4] board: sunxi: USB download gadget cable detection Paul Kocialkowski
2015-03-21 12:56 ` [U-Boot] [PATCH 1/4] sunxi: musb: Return early on VBUS GPIO error instead of on a positive value 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=201503151919.52419.marex@denx.de \
    --to=marex@denx.de \
    --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.