All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lee Jones <lee.jones@linaro.org>
To: Lu Baolu <baolu.lu@linux.intel.com>
Cc: felipe.balbi@linux.intel.com,
	Mathias Nyman <mathias.nyman@intel.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Heikki Krogerus <heikki.krogerus@linux.intel.com>,
	Liam Girdwood <lgirdwood@gmail.com>,
	Mark Brown <broonie@kernel.org>,
	linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v8 5/7] mfd: intel_vuport: Add Intel virtual USB port MFD Driver
Date: Mon, 9 May 2016 15:26:30 +0100	[thread overview]
Message-ID: <20160509142630.GJ8324@dell> (raw)
In-Reply-To: <1462426383-3949-6-git-send-email-baolu.lu@linux.intel.com>

On Thu, 05 May 2016, Lu Baolu wrote:

> Some Intel platforms have an USB port mux controlled by GPIOs.
> There's a single ACPI platform device that provides 1) USB ID
> extcon device; 2) USB vbus regulator device; and 3) USB port
> switch device. This MFD driver will split these 3 devices for
> their respective drivers.
> 
> [baolu: removed .owner per platform_no_drv_owner.cocci]
> Suggested-by: David Cohen <david.a.cohen@linux.intel.com>
> Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
> Reviewed-by: Felipe Balbi <balbi@kernel.org>
> ---
>  drivers/mfd/Kconfig        |  8 +++++
>  drivers/mfd/Makefile       |  1 +
>  drivers/mfd/intel-vuport.c | 89 ++++++++++++++++++++++++++++++++++++++++++++++
>  3 files changed, 98 insertions(+)
>  create mode 100644 drivers/mfd/intel-vuport.c

Acked-by: Lee Jones <lee.jones@linaro.org>

> diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig
> index eea61e3..7e115ab 100644
> --- a/drivers/mfd/Kconfig
> +++ b/drivers/mfd/Kconfig
> @@ -1578,5 +1578,13 @@ config MFD_VEXPRESS_SYSREG
>  	  System Registers are the platform configuration block
>  	  on the ARM Ltd. Versatile Express board.
>  
> +config MFD_INTEL_VUPORT
> +	tristate "Intel virtual USB port controller"
> +	select MFD_CORE
> +	depends on X86 && ACPI
> +	help
> +	  Say Y here to enable support for Intel's dual role port mux
> +	  controlled by GPIOs.
> +
>  endmenu
>  endif
> diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile
> index 5eaa6465d..65b0518 100644
> --- a/drivers/mfd/Makefile
> +++ b/drivers/mfd/Makefile
> @@ -203,3 +203,4 @@ intel-soc-pmic-objs		:= intel_soc_pmic_core.o intel_soc_pmic_crc.o
>  intel-soc-pmic-$(CONFIG_INTEL_PMC_IPC)	+= intel_soc_pmic_bxtwc.o
>  obj-$(CONFIG_INTEL_SOC_PMIC)	+= intel-soc-pmic.o
>  obj-$(CONFIG_MFD_MT6397)	+= mt6397-core.o
> +obj-$(CONFIG_MFD_INTEL_VUPORT)	+= intel-vuport.o
> diff --git a/drivers/mfd/intel-vuport.c b/drivers/mfd/intel-vuport.c
> new file mode 100644
> index 0000000..fa84ed7
> --- /dev/null
> +++ b/drivers/mfd/intel-vuport.c
> @@ -0,0 +1,89 @@
> +/*
> + * MFD driver for Intel virtual USB port
> + *
> + * Copyright(c) 2016 Intel Corporation.
> + * Author: Lu Baolu <baolu.lu@linux.intel.com>
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation.
> + */
> +
> +#include <linux/acpi.h>
> +#include <linux/gpio.h>
> +#include <linux/mfd/core.h>
> +#include <linux/property.h>
> +#include <linux/platform_device.h>
> +
> +/* ACPI GPIO Mappings */
> +static const struct acpi_gpio_params id_gpio = { 0, 0, false };
> +static const struct acpi_gpio_params vbus_gpio = { 1, 0, false };
> +static const struct acpi_gpio_params mux_gpio = { 2, 0, false };
> +static const struct acpi_gpio_mapping acpi_usb_gpios[] = {
> +	{ "id-gpios", &id_gpio, 1 },
> +	{ "gpio-gpios", &vbus_gpio, 1 },
> +	{ "usb_mux-gpios", &mux_gpio, 1 },
> +	{ },
> +};
> +
> +static struct property_entry reg_properties[] = {
> +	PROPERTY_ENTRY_STRING("supply-name", "regulator-usb-gpio"),
> +	{ },
> +};
> +
> +static const struct property_set reg_properties_pset = {
> +	.properties = reg_properties,
> +};
> +
> +static const struct mfd_cell intel_vuport_mfd_cells[] = {
> +	{ .name = "extcon-usb-gpio", },
> +	{
> +		.name = "reg-fixed-voltage",
> +		.pset = &reg_properties_pset,
> +	},
> +	{ .name = "intel-mux-gpio", },
> +};
> +
> +static int vuport_probe(struct platform_device *pdev)
> +{
> +	struct device *dev = &pdev->dev;
> +	int ret;
> +
> +	ret = acpi_dev_add_driver_gpios(ACPI_COMPANION(dev), acpi_usb_gpios);
> +	if (ret)
> +		return ret;
> +
> +	return mfd_add_devices(&pdev->dev, PLATFORM_DEVID_NONE,
> +				intel_vuport_mfd_cells,
> +				ARRAY_SIZE(intel_vuport_mfd_cells), NULL, 0,
> +				NULL);
> +}
> +
> +static int vuport_remove(struct platform_device *pdev)
> +{
> +	mfd_remove_devices(&pdev->dev);
> +	acpi_dev_remove_driver_gpios(ACPI_COMPANION(&pdev->dev));
> +
> +	return 0;
> +}
> +
> +static struct acpi_device_id vuport_acpi_match[] = {
> +	{ "INT3496" },
> +	{ }
> +};
> +MODULE_DEVICE_TABLE(acpi, vuport_acpi_match);
> +
> +static struct platform_driver vuport_driver = {
> +	.driver = {
> +		.name = "intel-vuport",
> +		.acpi_match_table = ACPI_PTR(vuport_acpi_match),
> +	},
> +	.probe = vuport_probe,
> +	.remove = vuport_remove,
> +};
> +
> +module_platform_driver(vuport_driver);
> +
> +MODULE_AUTHOR("Lu Baolu <baolu.lu@linux.intel.com>");
> +MODULE_DESCRIPTION("Intel virtual USB port");
> +MODULE_LICENSE("GPL v2");

-- 
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

  reply	other threads:[~2016-05-09 14:26 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-05-05  5:32 [PATCH v8 0/7] usb: add support for Intel dual role port mux Lu Baolu
2016-05-05  5:32 ` [PATCH v8 1/7] regulator: fixed: add support for ACPI interface Lu Baolu
2016-05-13 11:17   ` Mark Brown
2016-05-16  1:00     ` Lu Baolu
2016-05-05  5:32 ` [PATCH v8 2/7] usb: mux: add generic code for dual role port mux Lu Baolu
2016-05-25 11:06   ` Heikki Krogerus
2016-05-26  1:03     ` Lu Baolu
2016-05-27  8:00       ` Heikki Krogerus
2016-05-27  8:07         ` Lu Baolu
2016-05-05  5:32 ` [PATCH v8 3/7] usb: mux: add driver for Intel gpio controlled " Lu Baolu
2016-05-05  5:33 ` [PATCH v8 4/7] usb: mux: add driver for Intel drcfg " Lu Baolu
2016-05-05  5:33 ` [PATCH v8 5/7] mfd: intel_vuport: Add Intel virtual USB port MFD Driver Lu Baolu
2016-05-09 14:26   ` Lee Jones [this message]
2016-05-05  5:33 ` [PATCH v8 6/7] usb: pci-quirks: add Intel USB drcfg mux device Lu Baolu
2016-05-05  5:33 ` [PATCH v8 7/7] MAINTAINERS: add maintainer entry for Intel USB dual role mux drivers Lu Baolu

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=20160509142630.GJ8324@dell \
    --to=lee.jones@linaro.org \
    --cc=baolu.lu@linux.intel.com \
    --cc=broonie@kernel.org \
    --cc=felipe.balbi@linux.intel.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=heikki.krogerus@linux.intel.com \
    --cc=lgirdwood@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=mathias.nyman@intel.com \
    /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.