All of lore.kernel.org
 help / color / mirror / Atom feed
* [v3 0/7] Crystalcove (CRC) PMIC based panel and pwm control
@ 2015-06-26  9:02 ` Shobhit Kumar
  0 siblings, 0 replies; 32+ messages in thread
From: Shobhit Kumar @ 2015-06-26  9:02 UTC (permalink / raw)
  To: linux-pwm, intel-gfx, linux-kernel, dri-devel, linux-gpio
  Cc: Alexandre Courbot, Paul Bolle, Samuel Ortiz, Povilas Staniulis,
	Jani Nikula, Shobhit Kumar, Linus Walleij, varkabhadram,
	Paul Gortmaker, bloften80, David Airlie, Chih-Wei Huang,
	Thierry Reding, Daniel Vetter, Lee Jones

Hi,
Next update of the series reviewed at 
https://lkml.org/lkml/2015/6/22/155

Major changes are few review comments from Varka and Ville being addressed. Also except
for intel-gfx patches, all patches reviesion history is moved out of commit message.

Hope this series finally finds its mark.

Regards
Shobhit

Shobhit Kumar (7):
  gpiolib: Add support for removing registered consumer lookup table
  mfd: intel_soc_pmic_core: Add lookup table for Panel Control as GPIO
    signal
  mfd: intel_soc_pmic_crc: Add PWM cell device for Crystalcove PMIC
  mfd: intel_soc_pmic_core: ADD PWM lookup table for CRC PMIC based PWM
  pwm: crc: Add Crystalcove (CRC) PWM driver
  drm/i915: Use the CRC gpio for panel enable/disable
  drm/i915: Backlight control using CRC PMIC based PWM driver

 drivers/gpio/gpiolib.c             |  13 ++++
 drivers/gpu/drm/i915/intel_bios.h  |   7 ++
 drivers/gpu/drm/i915/intel_drv.h   |   4 ++
 drivers/gpu/drm/i915/intel_dsi.c   |  37 +++++++++-
 drivers/gpu/drm/i915/intel_dsi.h   |   3 +
 drivers/gpu/drm/i915/intel_panel.c |  94 ++++++++++++++++++++++--
 drivers/mfd/intel_soc_pmic_core.c  |  29 ++++++++
 drivers/mfd/intel_soc_pmic_crc.c   |   3 +
 drivers/pwm/Kconfig                |   7 ++
 drivers/pwm/Makefile               |   1 +
 drivers/pwm/pwm-crc.c              | 143 +++++++++++++++++++++++++++++++++++++
 include/linux/gpio/machine.h       |   1 +
 12 files changed, 335 insertions(+), 7 deletions(-)
 create mode 100644 drivers/pwm/pwm-crc.c

-- 
1.9.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 32+ messages in thread

* [v3 0/7] Crystalcove (CRC) PMIC based panel and pwm control
@ 2015-06-26  9:02 ` Shobhit Kumar
  0 siblings, 0 replies; 32+ messages in thread
From: Shobhit Kumar @ 2015-06-26  9:02 UTC (permalink / raw)
  To: linux-pwm, intel-gfx, linux-kernel, dri-devel, linux-gpio
  Cc: Paul Bolle, Jani Nikula, Samuel Ortiz, Alexandre Courbot,
	David Airlie, Povilas Staniulis, Chih-Wei Huang, Thierry Reding,
	Daniel Vetter, Lee Jones, Linus Walleij, Paul Gortmaker,
	bloften80, varkabhadram, Shobhit Kumar

Hi,
Next update of the series reviewed at 
https://lkml.org/lkml/2015/6/22/155

Major changes are few review comments from Varka and Ville being addressed. Also except
for intel-gfx patches, all patches reviesion history is moved out of commit message.

Hope this series finally finds its mark.

Regards
Shobhit

Shobhit Kumar (7):
  gpiolib: Add support for removing registered consumer lookup table
  mfd: intel_soc_pmic_core: Add lookup table for Panel Control as GPIO
    signal
  mfd: intel_soc_pmic_crc: Add PWM cell device for Crystalcove PMIC
  mfd: intel_soc_pmic_core: ADD PWM lookup table for CRC PMIC based PWM
  pwm: crc: Add Crystalcove (CRC) PWM driver
  drm/i915: Use the CRC gpio for panel enable/disable
  drm/i915: Backlight control using CRC PMIC based PWM driver

 drivers/gpio/gpiolib.c             |  13 ++++
 drivers/gpu/drm/i915/intel_bios.h  |   7 ++
 drivers/gpu/drm/i915/intel_drv.h   |   4 ++
 drivers/gpu/drm/i915/intel_dsi.c   |  37 +++++++++-
 drivers/gpu/drm/i915/intel_dsi.h   |   3 +
 drivers/gpu/drm/i915/intel_panel.c |  94 ++++++++++++++++++++++--
 drivers/mfd/intel_soc_pmic_core.c  |  29 ++++++++
 drivers/mfd/intel_soc_pmic_crc.c   |   3 +
 drivers/pwm/Kconfig                |   7 ++
 drivers/pwm/Makefile               |   1 +
 drivers/pwm/pwm-crc.c              | 143 +++++++++++++++++++++++++++++++++++++
 include/linux/gpio/machine.h       |   1 +
 12 files changed, 335 insertions(+), 7 deletions(-)
 create mode 100644 drivers/pwm/pwm-crc.c

-- 
1.9.1


^ permalink raw reply	[flat|nested] 32+ messages in thread

* [v3 1/7] gpiolib: Add support for removing registered consumer lookup table
  2015-06-26  9:02 ` Shobhit Kumar
@ 2015-06-26  9:02   ` Shobhit Kumar
  -1 siblings, 0 replies; 32+ messages in thread
From: Shobhit Kumar @ 2015-06-26  9:02 UTC (permalink / raw)
  To: linux-pwm, intel-gfx, linux-kernel, dri-devel, linux-gpio
  Cc: Alexandre Courbot, Paul Bolle, Samuel Ortiz, Povilas Staniulis,
	Jani Nikula, Shobhit Kumar, Linus Walleij, varkabhadram,
	Paul Gortmaker, bloften80, David Airlie, Chih-Wei Huang,
	Thierry Reding, Daniel Vetter, Lee Jones

In case we unload and load a driver module again that is registering a
lookup table, without this it will result in multiple entries. Provide
an option to remove the lookup table on driver unload

Cc: Samuel Ortiz <sameo@linux.intel.com>
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: Alexandre Courbot <gnurou@gmail.com>
Cc: Thierry Reding <thierry.reding@gmail.com>
Reviewed-by: Alexandre Courbot <acourbot@nvidia.com>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Tested-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Shobhit Kumar <shobhit.kumar@intel.com>
---
v2: Ccing maintainers
v3: Correct the subject line (Lee jones)

 drivers/gpio/gpiolib.c       | 13 +++++++++++++
 include/linux/gpio/machine.h |  1 +
 2 files changed, 14 insertions(+)

diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
index 957ede5..9d3ea4e 100644
--- a/drivers/gpio/gpiolib.c
+++ b/drivers/gpio/gpiolib.c
@@ -1675,6 +1675,19 @@ void gpiod_add_lookup_table(struct gpiod_lookup_table *table)
 	mutex_unlock(&gpio_lookup_lock);
 }
 
+/**
+ * gpiod_remove_lookup_table() - unregister GPIO device consumers
+ * @table: table of consumers to unregister
+ */
+void gpiod_remove_lookup_table(struct gpiod_lookup_table *table)
+{
+	mutex_lock(&gpio_lookup_lock);
+
+	list_del(&table->list);
+
+	mutex_unlock(&gpio_lookup_lock);
+}
+
 static struct gpio_desc *of_find_gpio(struct device *dev, const char *con_id,
 				      unsigned int idx,
 				      enum gpio_lookup_flags *flags)
diff --git a/include/linux/gpio/machine.h b/include/linux/gpio/machine.h
index e270614..c0d712d 100644
--- a/include/linux/gpio/machine.h
+++ b/include/linux/gpio/machine.h
@@ -57,5 +57,6 @@ struct gpiod_lookup_table {
 }
 
 void gpiod_add_lookup_table(struct gpiod_lookup_table *table);
+void gpiod_remove_lookup_table(struct gpiod_lookup_table *table);
 
 #endif /* __LINUX_GPIO_MACHINE_H */
-- 
1.9.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [v3 1/7] gpiolib: Add support for removing registered consumer lookup table
@ 2015-06-26  9:02   ` Shobhit Kumar
  0 siblings, 0 replies; 32+ messages in thread
From: Shobhit Kumar @ 2015-06-26  9:02 UTC (permalink / raw)
  To: linux-pwm, intel-gfx, linux-kernel, dri-devel, linux-gpio
  Cc: Paul Bolle, Jani Nikula, Samuel Ortiz, Alexandre Courbot,
	David Airlie, Povilas Staniulis, Chih-Wei Huang, Thierry Reding,
	Daniel Vetter, Lee Jones, Linus Walleij, Paul Gortmaker,
	bloften80, varkabhadram, Shobhit Kumar

In case we unload and load a driver module again that is registering a
lookup table, without this it will result in multiple entries. Provide
an option to remove the lookup table on driver unload

Cc: Samuel Ortiz <sameo@linux.intel.com>
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: Alexandre Courbot <gnurou@gmail.com>
Cc: Thierry Reding <thierry.reding@gmail.com>
Reviewed-by: Alexandre Courbot <acourbot@nvidia.com>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
Tested-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Shobhit Kumar <shobhit.kumar@intel.com>
---
v2: Ccing maintainers
v3: Correct the subject line (Lee jones)

 drivers/gpio/gpiolib.c       | 13 +++++++++++++
 include/linux/gpio/machine.h |  1 +
 2 files changed, 14 insertions(+)

diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
index 957ede5..9d3ea4e 100644
--- a/drivers/gpio/gpiolib.c
+++ b/drivers/gpio/gpiolib.c
@@ -1675,6 +1675,19 @@ void gpiod_add_lookup_table(struct gpiod_lookup_table *table)
 	mutex_unlock(&gpio_lookup_lock);
 }
 
+/**
+ * gpiod_remove_lookup_table() - unregister GPIO device consumers
+ * @table: table of consumers to unregister
+ */
+void gpiod_remove_lookup_table(struct gpiod_lookup_table *table)
+{
+	mutex_lock(&gpio_lookup_lock);
+
+	list_del(&table->list);
+
+	mutex_unlock(&gpio_lookup_lock);
+}
+
 static struct gpio_desc *of_find_gpio(struct device *dev, const char *con_id,
 				      unsigned int idx,
 				      enum gpio_lookup_flags *flags)
diff --git a/include/linux/gpio/machine.h b/include/linux/gpio/machine.h
index e270614..c0d712d 100644
--- a/include/linux/gpio/machine.h
+++ b/include/linux/gpio/machine.h
@@ -57,5 +57,6 @@ struct gpiod_lookup_table {
 }
 
 void gpiod_add_lookup_table(struct gpiod_lookup_table *table);
+void gpiod_remove_lookup_table(struct gpiod_lookup_table *table);
 
 #endif /* __LINUX_GPIO_MACHINE_H */
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [v3 2/7] mfd: intel_soc_pmic_core: Add lookup table for Panel Control as GPIO signal
  2015-06-26  9:02 ` Shobhit Kumar
@ 2015-06-26  9:02   ` Shobhit Kumar
  -1 siblings, 0 replies; 32+ messages in thread
From: Shobhit Kumar @ 2015-06-26  9:02 UTC (permalink / raw)
  To: linux-pwm, intel-gfx, linux-kernel, dri-devel, linux-gpio
  Cc: Alexandre Courbot, Paul Bolle, Samuel Ortiz, Povilas Staniulis,
	Jani Nikula, Shobhit Kumar, Linus Walleij, varkabhadram,
	Paul Gortmaker, bloften80, David Airlie, Chih-Wei Huang,
	Thierry Reding, Daniel Vetter, Lee Jones

On some Intel SoC platforms, the panel enable/disable signals are
controlled by CRC PMIC. Add those control as a new GPIO in a lookup
table for gpio-crystalcove chip during CRC driver load

CC: Samuel Ortiz <sameo@linux.intel.com>
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: Alexandre Courbot <gnurou@gmail.com>
Cc: Thierry Reding <thierry.reding@gmail.com>
Acked-by: Lee Jones <lee.jones@linaro.org>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Tested-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Shobhit Kumar <shobhit.kumar@intel.com>
---
v2: Make the lookup table static (Thierry)
    Remove the lookup table during driver remove (Thierry)

v3: Correct the subject line (Lee jones)

 drivers/mfd/intel_soc_pmic_core.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/drivers/mfd/intel_soc_pmic_core.c b/drivers/mfd/intel_soc_pmic_core.c
index 7b50b6b..f3d918e 100644
--- a/drivers/mfd/intel_soc_pmic_core.c
+++ b/drivers/mfd/intel_soc_pmic_core.c
@@ -24,8 +24,19 @@
 #include <linux/acpi.h>
 #include <linux/regmap.h>
 #include <linux/mfd/intel_soc_pmic.h>
+#include <linux/gpio/machine.h>
 #include "intel_soc_pmic_core.h"
 
+/* Lookup table for the Panel Enable/Disable line as GPIO signals */
+static struct gpiod_lookup_table panel_gpio_table = {
+	/* Intel GFX is consumer */
+	.dev_id = "0000:00:02.0",
+	.table = {
+		/* Panel EN/DISABLE */
+		GPIO_LOOKUP("gpio_crystalcove", 94, "panel", GPIO_ACTIVE_HIGH),
+	},
+};
+
 static int intel_soc_pmic_find_gpio_irq(struct device *dev)
 {
 	struct gpio_desc *desc;
@@ -85,6 +96,9 @@ static int intel_soc_pmic_i2c_probe(struct i2c_client *i2c,
 	if (ret)
 		dev_warn(dev, "Can't enable IRQ as wake source: %d\n", ret);
 
+	/* Add lookup table binding for Panel Control to the GPIO Chip */
+	gpiod_add_lookup_table(&panel_gpio_table);
+
 	ret = mfd_add_devices(dev, -1, config->cell_dev,
 			      config->n_cell_devs, NULL, 0,
 			      regmap_irq_get_domain(pmic->irq_chip_data));
@@ -104,6 +118,9 @@ static int intel_soc_pmic_i2c_remove(struct i2c_client *i2c)
 
 	regmap_del_irq_chip(pmic->irq, pmic->irq_chip_data);
 
+	/* Remove lookup table for Panel Control from the GPIO Chip */
+	gpiod_remove_lookup_table(&panel_gpio_table);
+
 	mfd_remove_devices(&i2c->dev);
 
 	return 0;
-- 
1.9.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [v3 2/7] mfd: intel_soc_pmic_core: Add lookup table for Panel Control as GPIO signal
@ 2015-06-26  9:02   ` Shobhit Kumar
  0 siblings, 0 replies; 32+ messages in thread
From: Shobhit Kumar @ 2015-06-26  9:02 UTC (permalink / raw)
  To: linux-pwm, intel-gfx, linux-kernel, dri-devel, linux-gpio
  Cc: Paul Bolle, Jani Nikula, Samuel Ortiz, Alexandre Courbot,
	David Airlie, Povilas Staniulis, Chih-Wei Huang, Thierry Reding,
	Daniel Vetter, Lee Jones, Linus Walleij, Paul Gortmaker,
	bloften80, varkabhadram, Shobhit Kumar

On some Intel SoC platforms, the panel enable/disable signals are
controlled by CRC PMIC. Add those control as a new GPIO in a lookup
table for gpio-crystalcove chip during CRC driver load

CC: Samuel Ortiz <sameo@linux.intel.com>
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: Alexandre Courbot <gnurou@gmail.com>
Cc: Thierry Reding <thierry.reding@gmail.com>
Acked-by: Lee Jones <lee.jones@linaro.org>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Tested-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Shobhit Kumar <shobhit.kumar@intel.com>
---
v2: Make the lookup table static (Thierry)
    Remove the lookup table during driver remove (Thierry)

v3: Correct the subject line (Lee jones)

 drivers/mfd/intel_soc_pmic_core.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/drivers/mfd/intel_soc_pmic_core.c b/drivers/mfd/intel_soc_pmic_core.c
index 7b50b6b..f3d918e 100644
--- a/drivers/mfd/intel_soc_pmic_core.c
+++ b/drivers/mfd/intel_soc_pmic_core.c
@@ -24,8 +24,19 @@
 #include <linux/acpi.h>
 #include <linux/regmap.h>
 #include <linux/mfd/intel_soc_pmic.h>
+#include <linux/gpio/machine.h>
 #include "intel_soc_pmic_core.h"
 
+/* Lookup table for the Panel Enable/Disable line as GPIO signals */
+static struct gpiod_lookup_table panel_gpio_table = {
+	/* Intel GFX is consumer */
+	.dev_id = "0000:00:02.0",
+	.table = {
+		/* Panel EN/DISABLE */
+		GPIO_LOOKUP("gpio_crystalcove", 94, "panel", GPIO_ACTIVE_HIGH),
+	},
+};
+
 static int intel_soc_pmic_find_gpio_irq(struct device *dev)
 {
 	struct gpio_desc *desc;
@@ -85,6 +96,9 @@ static int intel_soc_pmic_i2c_probe(struct i2c_client *i2c,
 	if (ret)
 		dev_warn(dev, "Can't enable IRQ as wake source: %d\n", ret);
 
+	/* Add lookup table binding for Panel Control to the GPIO Chip */
+	gpiod_add_lookup_table(&panel_gpio_table);
+
 	ret = mfd_add_devices(dev, -1, config->cell_dev,
 			      config->n_cell_devs, NULL, 0,
 			      regmap_irq_get_domain(pmic->irq_chip_data));
@@ -104,6 +118,9 @@ static int intel_soc_pmic_i2c_remove(struct i2c_client *i2c)
 
 	regmap_del_irq_chip(pmic->irq, pmic->irq_chip_data);
 
+	/* Remove lookup table for Panel Control from the GPIO Chip */
+	gpiod_remove_lookup_table(&panel_gpio_table);
+
 	mfd_remove_devices(&i2c->dev);
 
 	return 0;
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [v3 3/7] mfd: intel_soc_pmic_crc: Add PWM cell device for Crystalcove PMIC
  2015-06-26  9:02 ` Shobhit Kumar
                   ` (2 preceding siblings ...)
  (?)
@ 2015-06-26  9:02 ` Shobhit Kumar
  -1 siblings, 0 replies; 32+ messages in thread
From: Shobhit Kumar @ 2015-06-26  9:02 UTC (permalink / raw)
  To: linux-pwm, intel-gfx, linux-kernel, dri-devel, linux-gpio
  Cc: Paul Bolle, Jani Nikula, Samuel Ortiz, Alexandre Courbot,
	David Airlie, Povilas Staniulis, Chih-Wei Huang, Thierry Reding,
	Daniel Vetter, Lee Jones, Linus Walleij, Paul Gortmaker,
	bloften80, varkabhadram, Shobhit Kumar

Needed for PWM control suuported by the PMIC

CC: Samuel Ortiz <sameo@linux.intel.com>
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: Alexandre Courbot <gnurou@gmail.com>
Cc: Thierry Reding <thierry.reding@gmail.com>
Acked-by: Lee Jones <lee.jones@linaro.org>
Tested-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Shobhit Kumar <shobhit.kumar@intel.com>
---
v2: Correct the subject line (Lee jones)

 drivers/mfd/intel_soc_pmic_crc.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/mfd/intel_soc_pmic_crc.c b/drivers/mfd/intel_soc_pmic_crc.c
index 7436075..4a74948 100644
--- a/drivers/mfd/intel_soc_pmic_crc.c
+++ b/drivers/mfd/intel_soc_pmic_crc.c
@@ -109,6 +109,9 @@ static struct mfd_cell crystal_cove_dev[] = {
 	{
 		.name = "crystal_cove_pmic",
 	},
+	{
+		.name = "crystal_cove_pwm",
+	},
 };
 
 static const struct regmap_config crystal_cove_regmap_config = {
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [v3 4/7] mfd: intel_soc_pmic_core: ADD PWM lookup table for CRC PMIC based PWM
  2015-06-26  9:02 ` Shobhit Kumar
@ 2015-06-26  9:02   ` Shobhit Kumar
  -1 siblings, 0 replies; 32+ messages in thread
From: Shobhit Kumar @ 2015-06-26  9:02 UTC (permalink / raw)
  To: linux-pwm, intel-gfx, linux-kernel, dri-devel, linux-gpio
  Cc: Alexandre Courbot, Paul Bolle, Samuel Ortiz, Povilas Staniulis,
	Jani Nikula, Shobhit Kumar, Linus Walleij, varkabhadram,
	Paul Gortmaker, bloften80, David Airlie, Chih-Wei Huang,
	Thierry Reding, Daniel Vetter, Lee Jones

On some BYT PLatform the PWM is controlled using CRC PMIC. Add a lookup
entry for the same to be used by the consumer (Intel GFX)

CC: Samuel Ortiz <sameo@linux.intel.com>
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: Alexandre Courbot <gnurou@gmail.com>
Cc: Thierry Reding <thierry.reding@gmail.com>
Acked-by: Lee Jones <lee.jones@linaro.org>
Tested-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Shobhit Kumar <shobhit.kumar@intel.com>
---
v2: Remove the lookup table on driver unload (Thierry)

v3: Correct the subject line (Lee jones)

 drivers/mfd/intel_soc_pmic_core.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/drivers/mfd/intel_soc_pmic_core.c b/drivers/mfd/intel_soc_pmic_core.c
index f3d918e..a00ddd9 100644
--- a/drivers/mfd/intel_soc_pmic_core.c
+++ b/drivers/mfd/intel_soc_pmic_core.c
@@ -25,6 +25,7 @@
 #include <linux/regmap.h>
 #include <linux/mfd/intel_soc_pmic.h>
 #include <linux/gpio/machine.h>
+#include <linux/pwm.h>
 #include "intel_soc_pmic_core.h"
 
 /* Lookup table for the Panel Enable/Disable line as GPIO signals */
@@ -37,6 +38,11 @@ static struct gpiod_lookup_table panel_gpio_table = {
 	},
 };
 
+/* PWM consumed by the Intel GFX */
+static struct pwm_lookup crc_pwm_lookup[] = {
+	PWM_LOOKUP("crystal_cove_pwm", 0, "0000:00:02.0", "pwm_backlight", 0, PWM_POLARITY_NORMAL),
+};
+
 static int intel_soc_pmic_find_gpio_irq(struct device *dev)
 {
 	struct gpio_desc *desc;
@@ -99,6 +105,9 @@ static int intel_soc_pmic_i2c_probe(struct i2c_client *i2c,
 	/* Add lookup table binding for Panel Control to the GPIO Chip */
 	gpiod_add_lookup_table(&panel_gpio_table);
 
+	/* Add lookup table for crc-pwm */
+	pwm_add_table(crc_pwm_lookup, ARRAY_SIZE(crc_pwm_lookup));
+
 	ret = mfd_add_devices(dev, -1, config->cell_dev,
 			      config->n_cell_devs, NULL, 0,
 			      regmap_irq_get_domain(pmic->irq_chip_data));
@@ -121,6 +130,9 @@ static int intel_soc_pmic_i2c_remove(struct i2c_client *i2c)
 	/* Remove lookup table for Panel Control from the GPIO Chip */
 	gpiod_remove_lookup_table(&panel_gpio_table);
 
+	/* remove crc-pwm lookup table */
+	pwm_remove_table(crc_pwm_lookup, ARRAY_SIZE(crc_pwm_lookup));
+
 	mfd_remove_devices(&i2c->dev);
 
 	return 0;
-- 
1.9.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [v3 4/7] mfd: intel_soc_pmic_core: ADD PWM lookup table for CRC PMIC based PWM
@ 2015-06-26  9:02   ` Shobhit Kumar
  0 siblings, 0 replies; 32+ messages in thread
From: Shobhit Kumar @ 2015-06-26  9:02 UTC (permalink / raw)
  To: linux-pwm, intel-gfx, linux-kernel, dri-devel, linux-gpio
  Cc: Paul Bolle, Jani Nikula, Samuel Ortiz, Alexandre Courbot,
	David Airlie, Povilas Staniulis, Chih-Wei Huang, Thierry Reding,
	Daniel Vetter, Lee Jones, Linus Walleij, Paul Gortmaker,
	bloften80, varkabhadram, Shobhit Kumar

On some BYT PLatform the PWM is controlled using CRC PMIC. Add a lookup
entry for the same to be used by the consumer (Intel GFX)

CC: Samuel Ortiz <sameo@linux.intel.com>
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: Alexandre Courbot <gnurou@gmail.com>
Cc: Thierry Reding <thierry.reding@gmail.com>
Acked-by: Lee Jones <lee.jones@linaro.org>
Tested-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Shobhit Kumar <shobhit.kumar@intel.com>
---
v2: Remove the lookup table on driver unload (Thierry)

v3: Correct the subject line (Lee jones)

 drivers/mfd/intel_soc_pmic_core.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/drivers/mfd/intel_soc_pmic_core.c b/drivers/mfd/intel_soc_pmic_core.c
index f3d918e..a00ddd9 100644
--- a/drivers/mfd/intel_soc_pmic_core.c
+++ b/drivers/mfd/intel_soc_pmic_core.c
@@ -25,6 +25,7 @@
 #include <linux/regmap.h>
 #include <linux/mfd/intel_soc_pmic.h>
 #include <linux/gpio/machine.h>
+#include <linux/pwm.h>
 #include "intel_soc_pmic_core.h"
 
 /* Lookup table for the Panel Enable/Disable line as GPIO signals */
@@ -37,6 +38,11 @@ static struct gpiod_lookup_table panel_gpio_table = {
 	},
 };
 
+/* PWM consumed by the Intel GFX */
+static struct pwm_lookup crc_pwm_lookup[] = {
+	PWM_LOOKUP("crystal_cove_pwm", 0, "0000:00:02.0", "pwm_backlight", 0, PWM_POLARITY_NORMAL),
+};
+
 static int intel_soc_pmic_find_gpio_irq(struct device *dev)
 {
 	struct gpio_desc *desc;
@@ -99,6 +105,9 @@ static int intel_soc_pmic_i2c_probe(struct i2c_client *i2c,
 	/* Add lookup table binding for Panel Control to the GPIO Chip */
 	gpiod_add_lookup_table(&panel_gpio_table);
 
+	/* Add lookup table for crc-pwm */
+	pwm_add_table(crc_pwm_lookup, ARRAY_SIZE(crc_pwm_lookup));
+
 	ret = mfd_add_devices(dev, -1, config->cell_dev,
 			      config->n_cell_devs, NULL, 0,
 			      regmap_irq_get_domain(pmic->irq_chip_data));
@@ -121,6 +130,9 @@ static int intel_soc_pmic_i2c_remove(struct i2c_client *i2c)
 	/* Remove lookup table for Panel Control from the GPIO Chip */
 	gpiod_remove_lookup_table(&panel_gpio_table);
 
+	/* remove crc-pwm lookup table */
+	pwm_remove_table(crc_pwm_lookup, ARRAY_SIZE(crc_pwm_lookup));
+
 	mfd_remove_devices(&i2c->dev);
 
 	return 0;
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [v3 5/7] pwm: crc: Add Crystalcove (CRC) PWM driver
  2015-06-26  9:02 ` Shobhit Kumar
@ 2015-06-26  9:02   ` Shobhit Kumar
  -1 siblings, 0 replies; 32+ messages in thread
From: Shobhit Kumar @ 2015-06-26  9:02 UTC (permalink / raw)
  To: linux-pwm, intel-gfx, linux-kernel, dri-devel, linux-gpio
  Cc: Alexandre Courbot, Paul Bolle, Samuel Ortiz, Povilas Staniulis,
	Jani Nikula, Shobhit Kumar, Linus Walleij, varkabhadram,
	Paul Gortmaker, bloften80, David Airlie, Chih-Wei Huang,
	Thierry Reding, Daniel Vetter, Lee Jones

The Crystalcove PMIC provides three PWM signals and this driver exports
one of them on the BYT platform which is used to control backlight for
DSI panel. This is platform device implementation of the drivers/mfd
cell device for CRC PMIC.

CC: Samuel Ortiz <sameo@linux.intel.com>
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: Alexandre Courbot <gnurou@gmail.com>
Cc: Thierry Reding <thierry.reding@gmail.com>
Cc: Paul Bolle <pebolle@tiscali.nl>
Cc: Paul Gortmaker <paul.gortmaker@windriver.com>
Tested-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Shobhit Kumar <shobhit.kumar@intel.com>
---
v2: Use the existing config callback with duty_ns and period_ns(Thierry)

v3: Correct the subject line (Lee jones)

v4: Address comment by Thierry & Paul
    - Commit message update and fixes for few syntax errors
    - Add PWM_CRC in Kconfig and Makefile sorted alphabetically
    - Use the PWM_BASE_CLK as 6000000 for better code readability
    - Remove the redundant rule of three while calculating pwm level
    - Use the platform_device in pwm_chip
    - Use builin_platform_driver

v5: Address comments by Varka
    - Make the bit definition using BIT macro
    - reorder probe and remove code to directly return from pwmchip_add/remove

 drivers/pwm/Kconfig   |   7 +++
 drivers/pwm/Makefile  |   1 +
 drivers/pwm/pwm-crc.c | 143 ++++++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 151 insertions(+)
 create mode 100644 drivers/pwm/pwm-crc.c

diff --git a/drivers/pwm/Kconfig b/drivers/pwm/Kconfig
index b1541f4..948d9ab 100644
--- a/drivers/pwm/Kconfig
+++ b/drivers/pwm/Kconfig
@@ -111,6 +111,13 @@ config PWM_CLPS711X
 	  To compile this driver as a module, choose M here: the module
 	  will be called pwm-clps711x.
 
+config PWM_CRC
+	bool "Intel Crystalcove (CRC) PWM support"
+	depends on X86 && INTEL_SOC_PMIC
+	help
+	  Generic PWM framework driver for Crystalcove (CRC) PMIC based PWM
+	  control.
+
 config PWM_EP93XX
 	tristate "Cirrus Logic EP93xx PWM support"
 	depends on ARCH_EP93XX
diff --git a/drivers/pwm/Makefile b/drivers/pwm/Makefile
index ec50eb5..d186f35 100644
--- a/drivers/pwm/Makefile
+++ b/drivers/pwm/Makefile
@@ -8,6 +8,7 @@ obj-$(CONFIG_PWM_BCM_KONA)	+= pwm-bcm-kona.o
 obj-$(CONFIG_PWM_BCM2835)	+= pwm-bcm2835.o
 obj-$(CONFIG_PWM_BFIN)		+= pwm-bfin.o
 obj-$(CONFIG_PWM_CLPS711X)	+= pwm-clps711x.o
+obj-$(CONFIG_PWM_CRC)		+= pwm-crc.o
 obj-$(CONFIG_PWM_EP93XX)	+= pwm-ep93xx.o
 obj-$(CONFIG_PWM_FSL_FTM)	+= pwm-fsl-ftm.o
 obj-$(CONFIG_PWM_IMG)		+= pwm-img.o
diff --git a/drivers/pwm/pwm-crc.c b/drivers/pwm/pwm-crc.c
new file mode 100644
index 0000000..7101c70
--- /dev/null
+++ b/drivers/pwm/pwm-crc.c
@@ -0,0 +1,143 @@
+/*
+ * Copyright (C) 2015 Intel Corporation. All rights reserved.
+ *
+ * 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.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * Author: Shobhit Kumar <shobhit.kumar@intel.com>
+ */
+
+#include <linux/platform_device.h>
+#include <linux/regmap.h>
+#include <linux/mfd/intel_soc_pmic.h>
+#include <linux/pwm.h>
+
+#define PWM0_CLK_DIV		0x4B
+#define  PWM_OUTPUT_ENABLE	BIT(7)
+#define  PWM_DIV_CLK_0		0x00 /* DIVIDECLK = BASECLK */
+#define  PWM_DIV_CLK_100	0x63 /* DIVIDECLK = BASECLK/100 */
+#define  PWM_DIV_CLK_128	0x7F /* DIVIDECLK = BASECLK/128 */
+
+#define PWM0_DUTY_CYCLE		0x4E
+#define BACKLIGHT_EN		0x51
+
+#define PWM_MAX_LEVEL		0xFF
+
+#define PWM_BASE_CLK		6000000  /* 6 MHz */
+#define PWM_MAX_PERIOD_NS	21333    /* 46.875KHz */
+
+/**
+ * struct crystalcove_pwm - Crystal Cove PWM controller
+ * @chip: the abstract pwm_chip structure.
+ * @regmap: the regmap from the parent device.
+ */
+struct crystalcove_pwm {
+	struct pwm_chip chip;
+	struct regmap *regmap;
+};
+
+static inline struct crystalcove_pwm *to_crc_pwm(struct pwm_chip *pc)
+{
+	return container_of(pc, struct crystalcove_pwm, chip);
+}
+
+static int crc_pwm_enable(struct pwm_chip *c, struct pwm_device *pwm)
+{
+	struct crystalcove_pwm *crc_pwm = to_crc_pwm(c);
+
+	regmap_write(crc_pwm->regmap, BACKLIGHT_EN, 1);
+
+	return 0;
+}
+
+static void crc_pwm_disable(struct pwm_chip *c, struct pwm_device *pwm)
+{
+	struct crystalcove_pwm *crc_pwm = to_crc_pwm(c);
+
+	regmap_write(crc_pwm->regmap, BACKLIGHT_EN, 0);
+}
+
+static int crc_pwm_config(struct pwm_chip *c, struct pwm_device *pwm,
+			  int duty_ns, int period_ns)
+{
+	struct crystalcove_pwm *crc_pwm = to_crc_pwm(c);
+	struct device *dev = crc_pwm->chip.dev;
+	int level;
+
+	if (period_ns > PWM_MAX_PERIOD_NS) {
+		dev_err(dev, "un-supported period_ns\n");
+		return -EINVAL;
+	}
+
+	if (pwm->period != period_ns) {
+		int clk_div;
+
+		/* changing the clk divisor, need to disable fisrt */
+		crc_pwm_disable(c, pwm);
+		clk_div = PWM_BASE_CLK * period_ns / NSEC_PER_SEC;
+
+		regmap_write(crc_pwm->regmap, PWM0_CLK_DIV,
+					clk_div | PWM_OUTPUT_ENABLE);
+
+		/* enable back */
+		crc_pwm_enable(c, pwm);
+	}
+
+	/* change the pwm duty cycle */
+	level = duty_ns * PWM_MAX_LEVEL / period_ns;
+	regmap_write(crc_pwm->regmap, PWM0_DUTY_CYCLE, level);
+
+	return 0;
+}
+
+static const struct pwm_ops crc_pwm_ops = {
+	.config = crc_pwm_config,
+	.enable = crc_pwm_enable,
+	.disable = crc_pwm_disable,
+};
+
+static int crystalcove_pwm_probe(struct platform_device *pdev)
+{
+	struct crystalcove_pwm *pwm;
+	struct device *dev = pdev->dev.parent;
+	struct intel_soc_pmic *pmic = dev_get_drvdata(dev);
+
+	pwm = devm_kzalloc(&pdev->dev, sizeof(*pwm), GFP_KERNEL);
+	if (!pwm)
+		return -ENOMEM;
+
+	pwm->chip.dev = &pdev->dev;
+	pwm->chip.ops = &crc_pwm_ops;
+	pwm->chip.base = -1;
+	pwm->chip.npwm = 1;
+
+	/* get the PMIC regmap */
+	pwm->regmap = pmic->regmap;
+
+	platform_set_drvdata(pdev, pwm);
+
+	return pwmchip_add(&pwm->chip);
+}
+
+static int crystalcove_pwm_remove(struct platform_device *pdev)
+{
+	struct crystalcove_pwm *pwm = platform_get_drvdata(pdev);
+
+	return pwmchip_remove(&pwm->chip);
+}
+
+static struct platform_driver crystalcove_pwm_driver = {
+	.probe = crystalcove_pwm_probe,
+	.remove = crystalcove_pwm_remove,
+	.driver = {
+		.name = "crystal_cove_pwm",
+	},
+};
+
+builtin_platform_driver(crystalcove_pwm_driver);
-- 
1.9.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [v3 5/7] pwm: crc: Add Crystalcove (CRC) PWM driver
@ 2015-06-26  9:02   ` Shobhit Kumar
  0 siblings, 0 replies; 32+ messages in thread
From: Shobhit Kumar @ 2015-06-26  9:02 UTC (permalink / raw)
  To: linux-pwm, intel-gfx, linux-kernel, dri-devel, linux-gpio
  Cc: Paul Bolle, Jani Nikula, Samuel Ortiz, Alexandre Courbot,
	David Airlie, Povilas Staniulis, Chih-Wei Huang, Thierry Reding,
	Daniel Vetter, Lee Jones, Linus Walleij, Paul Gortmaker,
	bloften80, varkabhadram, Shobhit Kumar

The Crystalcove PMIC provides three PWM signals and this driver exports
one of them on the BYT platform which is used to control backlight for
DSI panel. This is platform device implementation of the drivers/mfd
cell device for CRC PMIC.

CC: Samuel Ortiz <sameo@linux.intel.com>
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: Alexandre Courbot <gnurou@gmail.com>
Cc: Thierry Reding <thierry.reding@gmail.com>
Cc: Paul Bolle <pebolle@tiscali.nl>
Cc: Paul Gortmaker <paul.gortmaker@windriver.com>
Tested-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Shobhit Kumar <shobhit.kumar@intel.com>
---
v2: Use the existing config callback with duty_ns and period_ns(Thierry)

v3: Correct the subject line (Lee jones)

v4: Address comment by Thierry & Paul
    - Commit message update and fixes for few syntax errors
    - Add PWM_CRC in Kconfig and Makefile sorted alphabetically
    - Use the PWM_BASE_CLK as 6000000 for better code readability
    - Remove the redundant rule of three while calculating pwm level
    - Use the platform_device in pwm_chip
    - Use builin_platform_driver

v5: Address comments by Varka
    - Make the bit definition using BIT macro
    - reorder probe and remove code to directly return from pwmchip_add/remove

 drivers/pwm/Kconfig   |   7 +++
 drivers/pwm/Makefile  |   1 +
 drivers/pwm/pwm-crc.c | 143 ++++++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 151 insertions(+)
 create mode 100644 drivers/pwm/pwm-crc.c

diff --git a/drivers/pwm/Kconfig b/drivers/pwm/Kconfig
index b1541f4..948d9ab 100644
--- a/drivers/pwm/Kconfig
+++ b/drivers/pwm/Kconfig
@@ -111,6 +111,13 @@ config PWM_CLPS711X
 	  To compile this driver as a module, choose M here: the module
 	  will be called pwm-clps711x.
 
+config PWM_CRC
+	bool "Intel Crystalcove (CRC) PWM support"
+	depends on X86 && INTEL_SOC_PMIC
+	help
+	  Generic PWM framework driver for Crystalcove (CRC) PMIC based PWM
+	  control.
+
 config PWM_EP93XX
 	tristate "Cirrus Logic EP93xx PWM support"
 	depends on ARCH_EP93XX
diff --git a/drivers/pwm/Makefile b/drivers/pwm/Makefile
index ec50eb5..d186f35 100644
--- a/drivers/pwm/Makefile
+++ b/drivers/pwm/Makefile
@@ -8,6 +8,7 @@ obj-$(CONFIG_PWM_BCM_KONA)	+= pwm-bcm-kona.o
 obj-$(CONFIG_PWM_BCM2835)	+= pwm-bcm2835.o
 obj-$(CONFIG_PWM_BFIN)		+= pwm-bfin.o
 obj-$(CONFIG_PWM_CLPS711X)	+= pwm-clps711x.o
+obj-$(CONFIG_PWM_CRC)		+= pwm-crc.o
 obj-$(CONFIG_PWM_EP93XX)	+= pwm-ep93xx.o
 obj-$(CONFIG_PWM_FSL_FTM)	+= pwm-fsl-ftm.o
 obj-$(CONFIG_PWM_IMG)		+= pwm-img.o
diff --git a/drivers/pwm/pwm-crc.c b/drivers/pwm/pwm-crc.c
new file mode 100644
index 0000000..7101c70
--- /dev/null
+++ b/drivers/pwm/pwm-crc.c
@@ -0,0 +1,143 @@
+/*
+ * Copyright (C) 2015 Intel Corporation. All rights reserved.
+ *
+ * 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.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * Author: Shobhit Kumar <shobhit.kumar@intel.com>
+ */
+
+#include <linux/platform_device.h>
+#include <linux/regmap.h>
+#include <linux/mfd/intel_soc_pmic.h>
+#include <linux/pwm.h>
+
+#define PWM0_CLK_DIV		0x4B
+#define  PWM_OUTPUT_ENABLE	BIT(7)
+#define  PWM_DIV_CLK_0		0x00 /* DIVIDECLK = BASECLK */
+#define  PWM_DIV_CLK_100	0x63 /* DIVIDECLK = BASECLK/100 */
+#define  PWM_DIV_CLK_128	0x7F /* DIVIDECLK = BASECLK/128 */
+
+#define PWM0_DUTY_CYCLE		0x4E
+#define BACKLIGHT_EN		0x51
+
+#define PWM_MAX_LEVEL		0xFF
+
+#define PWM_BASE_CLK		6000000  /* 6 MHz */
+#define PWM_MAX_PERIOD_NS	21333    /* 46.875KHz */
+
+/**
+ * struct crystalcove_pwm - Crystal Cove PWM controller
+ * @chip: the abstract pwm_chip structure.
+ * @regmap: the regmap from the parent device.
+ */
+struct crystalcove_pwm {
+	struct pwm_chip chip;
+	struct regmap *regmap;
+};
+
+static inline struct crystalcove_pwm *to_crc_pwm(struct pwm_chip *pc)
+{
+	return container_of(pc, struct crystalcove_pwm, chip);
+}
+
+static int crc_pwm_enable(struct pwm_chip *c, struct pwm_device *pwm)
+{
+	struct crystalcove_pwm *crc_pwm = to_crc_pwm(c);
+
+	regmap_write(crc_pwm->regmap, BACKLIGHT_EN, 1);
+
+	return 0;
+}
+
+static void crc_pwm_disable(struct pwm_chip *c, struct pwm_device *pwm)
+{
+	struct crystalcove_pwm *crc_pwm = to_crc_pwm(c);
+
+	regmap_write(crc_pwm->regmap, BACKLIGHT_EN, 0);
+}
+
+static int crc_pwm_config(struct pwm_chip *c, struct pwm_device *pwm,
+			  int duty_ns, int period_ns)
+{
+	struct crystalcove_pwm *crc_pwm = to_crc_pwm(c);
+	struct device *dev = crc_pwm->chip.dev;
+	int level;
+
+	if (period_ns > PWM_MAX_PERIOD_NS) {
+		dev_err(dev, "un-supported period_ns\n");
+		return -EINVAL;
+	}
+
+	if (pwm->period != period_ns) {
+		int clk_div;
+
+		/* changing the clk divisor, need to disable fisrt */
+		crc_pwm_disable(c, pwm);
+		clk_div = PWM_BASE_CLK * period_ns / NSEC_PER_SEC;
+
+		regmap_write(crc_pwm->regmap, PWM0_CLK_DIV,
+					clk_div | PWM_OUTPUT_ENABLE);
+
+		/* enable back */
+		crc_pwm_enable(c, pwm);
+	}
+
+	/* change the pwm duty cycle */
+	level = duty_ns * PWM_MAX_LEVEL / period_ns;
+	regmap_write(crc_pwm->regmap, PWM0_DUTY_CYCLE, level);
+
+	return 0;
+}
+
+static const struct pwm_ops crc_pwm_ops = {
+	.config = crc_pwm_config,
+	.enable = crc_pwm_enable,
+	.disable = crc_pwm_disable,
+};
+
+static int crystalcove_pwm_probe(struct platform_device *pdev)
+{
+	struct crystalcove_pwm *pwm;
+	struct device *dev = pdev->dev.parent;
+	struct intel_soc_pmic *pmic = dev_get_drvdata(dev);
+
+	pwm = devm_kzalloc(&pdev->dev, sizeof(*pwm), GFP_KERNEL);
+	if (!pwm)
+		return -ENOMEM;
+
+	pwm->chip.dev = &pdev->dev;
+	pwm->chip.ops = &crc_pwm_ops;
+	pwm->chip.base = -1;
+	pwm->chip.npwm = 1;
+
+	/* get the PMIC regmap */
+	pwm->regmap = pmic->regmap;
+
+	platform_set_drvdata(pdev, pwm);
+
+	return pwmchip_add(&pwm->chip);
+}
+
+static int crystalcove_pwm_remove(struct platform_device *pdev)
+{
+	struct crystalcove_pwm *pwm = platform_get_drvdata(pdev);
+
+	return pwmchip_remove(&pwm->chip);
+}
+
+static struct platform_driver crystalcove_pwm_driver = {
+	.probe = crystalcove_pwm_probe,
+	.remove = crystalcove_pwm_remove,
+	.driver = {
+		.name = "crystal_cove_pwm",
+	},
+};
+
+builtin_platform_driver(crystalcove_pwm_driver);
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [v3 6/7] drm/i915: Use the CRC gpio for panel enable/disable
  2015-06-26  9:02 ` Shobhit Kumar
@ 2015-06-26  9:02   ` Shobhit Kumar
  -1 siblings, 0 replies; 32+ messages in thread
From: Shobhit Kumar @ 2015-06-26  9:02 UTC (permalink / raw)
  To: linux-pwm, intel-gfx, linux-kernel, dri-devel, linux-gpio
  Cc: Alexandre Courbot, Paul Bolle, Samuel Ortiz, Povilas Staniulis,
	Jani Nikula, Shobhit Kumar, Linus Walleij, varkabhadram,
	Paul Gortmaker, bloften80, David Airlie, Chih-Wei Huang,
	Thierry Reding, Daniel Vetter, Lee Jones

The CRC (Crystal Cove) PMIC, controls the panel enable and disable
signals for BYT for dsi panels. This is indicated in the VBT fields. Use
that to initialize and use GPIO based control for these signals.

v2: Use the newer gpiod interface(Alexandre)
v3: Remove the redundant checks and unused code (Ville)
v4: Moved PWM vs SoC backlight #defines to intel_bios.h (Jani)

CC: Samuel Ortiz <sameo@linux.intel.com>
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: Alexandre Courbot <gnurou@gmail.com>
Cc: Thierry Reding <thierry.reding@gmail.com>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Tested-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Shobhit Kumar <shobhit.kumar@intel.com>
---
 drivers/gpu/drm/i915/intel_bios.h |  7 +++++++
 drivers/gpu/drm/i915/intel_dsi.c  | 32 ++++++++++++++++++++++++++++++--
 drivers/gpu/drm/i915/intel_dsi.h  |  3 +++
 3 files changed, 40 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_bios.h b/drivers/gpu/drm/i915/intel_bios.h
index af0b476..f7ad6a5 100644
--- a/drivers/gpu/drm/i915/intel_bios.h
+++ b/drivers/gpu/drm/i915/intel_bios.h
@@ -778,6 +778,13 @@ int intel_parse_bios(struct drm_device *dev);
 #define MIPI_DSI_UNDEFINED_PANEL_ID	0
 #define MIPI_DSI_GENERIC_PANEL_ID	1
 
+/*
+ * PMIC vs SoC Backlight support specified in pwm_blc
+ * field in mipi_config block below.
+*/
+#define PPS_BLC_PMIC   0
+#define PPS_BLC_SOC    1
+
 struct mipi_config {
 	u16 panel_id;
 
diff --git a/drivers/gpu/drm/i915/intel_dsi.c b/drivers/gpu/drm/i915/intel_dsi.c
index b5a5558..c4db74a 100644
--- a/drivers/gpu/drm/i915/intel_dsi.c
+++ b/drivers/gpu/drm/i915/intel_dsi.c
@@ -31,6 +31,7 @@
 #include <drm/drm_panel.h>
 #include <drm/drm_mipi_dsi.h>
 #include <linux/slab.h>
+#include <linux/gpio/consumer.h>
 #include "i915_drv.h"
 #include "intel_drv.h"
 #include "intel_dsi.h"
@@ -415,6 +416,12 @@ static void intel_dsi_pre_enable(struct intel_encoder *encoder)
 
 	DRM_DEBUG_KMS("\n");
 
+	/* Panel Enable over CRC PMIC */
+	if (intel_dsi->gpio_panel)
+		gpiod_set_value_cansleep(intel_dsi->gpio_panel, 1);
+
+	msleep(intel_dsi->panel_on_delay);
+
 	/* Disable DPOunit clock gating, can stall pipe
 	 * and we need DPLL REFA always enabled */
 	tmp = I915_READ(DPLL(pipe));
@@ -432,8 +439,6 @@ static void intel_dsi_pre_enable(struct intel_encoder *encoder)
 	/* put device in ready state */
 	intel_dsi_device_ready(encoder);
 
-	msleep(intel_dsi->panel_on_delay);
-
 	drm_panel_prepare(intel_dsi->panel);
 
 	for_each_dsi_port(port, intel_dsi->ports)
@@ -576,6 +581,10 @@ static void intel_dsi_post_disable(struct intel_encoder *encoder)
 
 	msleep(intel_dsi->panel_off_delay);
 	msleep(intel_dsi->panel_pwr_cycle_delay);
+
+	/* Panel Disable over CRC PMIC */
+	if (intel_dsi->gpio_panel)
+		gpiod_set_value_cansleep(intel_dsi->gpio_panel, 0);
 }
 
 static bool intel_dsi_get_hw_state(struct intel_encoder *encoder,
@@ -955,6 +964,11 @@ static void intel_dsi_encoder_destroy(struct drm_encoder *encoder)
 		/* XXX: Logically this call belongs in the panel driver. */
 		drm_panel_remove(intel_dsi->panel);
 	}
+
+	/* dispose of the gpios */
+	if (intel_dsi->gpio_panel)
+		gpiod_put(intel_dsi->gpio_panel);
+
 	intel_encoder_destroy(encoder);
 }
 
@@ -1071,6 +1085,20 @@ void intel_dsi_init(struct drm_device *dev)
 		goto err;
 	}
 
+	/*
+	 * In case of BYT with CRC PMIC, we need to use GPIO for
+	 * Panel control.
+	 */
+	if (dev_priv->vbt.dsi.config->pwm_blc == PPS_BLC_PMIC) {
+		intel_dsi->gpio_panel =
+			gpiod_get(dev->dev, "panel", GPIOD_OUT_HIGH);
+
+		if (IS_ERR(intel_dsi->gpio_panel)) {
+			DRM_ERROR("Failed to own gpio for panel control\n");
+			intel_dsi->gpio_panel = NULL;
+		}
+	}
+
 	intel_encoder->type = INTEL_OUTPUT_DSI;
 	intel_encoder->cloneable = 0;
 	drm_connector_init(dev, connector, &intel_dsi_connector_funcs,
diff --git a/drivers/gpu/drm/i915/intel_dsi.h b/drivers/gpu/drm/i915/intel_dsi.h
index 2784ac4..42a6859 100644
--- a/drivers/gpu/drm/i915/intel_dsi.h
+++ b/drivers/gpu/drm/i915/intel_dsi.h
@@ -42,6 +42,9 @@ struct intel_dsi {
 	struct drm_panel *panel;
 	struct intel_dsi_host *dsi_hosts[I915_MAX_PORTS];
 
+	/* GPIO Desc for CRC based Panel control */
+	struct gpio_desc *gpio_panel;
+
 	struct intel_connector *attached_connector;
 
 	/* bit mask of ports being driven */
-- 
1.9.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [v3 6/7] drm/i915: Use the CRC gpio for panel enable/disable
@ 2015-06-26  9:02   ` Shobhit Kumar
  0 siblings, 0 replies; 32+ messages in thread
From: Shobhit Kumar @ 2015-06-26  9:02 UTC (permalink / raw)
  To: linux-pwm, intel-gfx, linux-kernel, dri-devel, linux-gpio
  Cc: Paul Bolle, Jani Nikula, Samuel Ortiz, Alexandre Courbot,
	David Airlie, Povilas Staniulis, Chih-Wei Huang, Thierry Reding,
	Daniel Vetter, Lee Jones, Linus Walleij, Paul Gortmaker,
	bloften80, varkabhadram, Shobhit Kumar

The CRC (Crystal Cove) PMIC, controls the panel enable and disable
signals for BYT for dsi panels. This is indicated in the VBT fields. Use
that to initialize and use GPIO based control for these signals.

v2: Use the newer gpiod interface(Alexandre)
v3: Remove the redundant checks and unused code (Ville)
v4: Moved PWM vs SoC backlight #defines to intel_bios.h (Jani)

CC: Samuel Ortiz <sameo@linux.intel.com>
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: Alexandre Courbot <gnurou@gmail.com>
Cc: Thierry Reding <thierry.reding@gmail.com>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
Tested-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Shobhit Kumar <shobhit.kumar@intel.com>
---
 drivers/gpu/drm/i915/intel_bios.h |  7 +++++++
 drivers/gpu/drm/i915/intel_dsi.c  | 32 ++++++++++++++++++++++++++++++--
 drivers/gpu/drm/i915/intel_dsi.h  |  3 +++
 3 files changed, 40 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_bios.h b/drivers/gpu/drm/i915/intel_bios.h
index af0b476..f7ad6a5 100644
--- a/drivers/gpu/drm/i915/intel_bios.h
+++ b/drivers/gpu/drm/i915/intel_bios.h
@@ -778,6 +778,13 @@ int intel_parse_bios(struct drm_device *dev);
 #define MIPI_DSI_UNDEFINED_PANEL_ID	0
 #define MIPI_DSI_GENERIC_PANEL_ID	1
 
+/*
+ * PMIC vs SoC Backlight support specified in pwm_blc
+ * field in mipi_config block below.
+*/
+#define PPS_BLC_PMIC   0
+#define PPS_BLC_SOC    1
+
 struct mipi_config {
 	u16 panel_id;
 
diff --git a/drivers/gpu/drm/i915/intel_dsi.c b/drivers/gpu/drm/i915/intel_dsi.c
index b5a5558..c4db74a 100644
--- a/drivers/gpu/drm/i915/intel_dsi.c
+++ b/drivers/gpu/drm/i915/intel_dsi.c
@@ -31,6 +31,7 @@
 #include <drm/drm_panel.h>
 #include <drm/drm_mipi_dsi.h>
 #include <linux/slab.h>
+#include <linux/gpio/consumer.h>
 #include "i915_drv.h"
 #include "intel_drv.h"
 #include "intel_dsi.h"
@@ -415,6 +416,12 @@ static void intel_dsi_pre_enable(struct intel_encoder *encoder)
 
 	DRM_DEBUG_KMS("\n");
 
+	/* Panel Enable over CRC PMIC */
+	if (intel_dsi->gpio_panel)
+		gpiod_set_value_cansleep(intel_dsi->gpio_panel, 1);
+
+	msleep(intel_dsi->panel_on_delay);
+
 	/* Disable DPOunit clock gating, can stall pipe
 	 * and we need DPLL REFA always enabled */
 	tmp = I915_READ(DPLL(pipe));
@@ -432,8 +439,6 @@ static void intel_dsi_pre_enable(struct intel_encoder *encoder)
 	/* put device in ready state */
 	intel_dsi_device_ready(encoder);
 
-	msleep(intel_dsi->panel_on_delay);
-
 	drm_panel_prepare(intel_dsi->panel);
 
 	for_each_dsi_port(port, intel_dsi->ports)
@@ -576,6 +581,10 @@ static void intel_dsi_post_disable(struct intel_encoder *encoder)
 
 	msleep(intel_dsi->panel_off_delay);
 	msleep(intel_dsi->panel_pwr_cycle_delay);
+
+	/* Panel Disable over CRC PMIC */
+	if (intel_dsi->gpio_panel)
+		gpiod_set_value_cansleep(intel_dsi->gpio_panel, 0);
 }
 
 static bool intel_dsi_get_hw_state(struct intel_encoder *encoder,
@@ -955,6 +964,11 @@ static void intel_dsi_encoder_destroy(struct drm_encoder *encoder)
 		/* XXX: Logically this call belongs in the panel driver. */
 		drm_panel_remove(intel_dsi->panel);
 	}
+
+	/* dispose of the gpios */
+	if (intel_dsi->gpio_panel)
+		gpiod_put(intel_dsi->gpio_panel);
+
 	intel_encoder_destroy(encoder);
 }
 
@@ -1071,6 +1085,20 @@ void intel_dsi_init(struct drm_device *dev)
 		goto err;
 	}
 
+	/*
+	 * In case of BYT with CRC PMIC, we need to use GPIO for
+	 * Panel control.
+	 */
+	if (dev_priv->vbt.dsi.config->pwm_blc == PPS_BLC_PMIC) {
+		intel_dsi->gpio_panel =
+			gpiod_get(dev->dev, "panel", GPIOD_OUT_HIGH);
+
+		if (IS_ERR(intel_dsi->gpio_panel)) {
+			DRM_ERROR("Failed to own gpio for panel control\n");
+			intel_dsi->gpio_panel = NULL;
+		}
+	}
+
 	intel_encoder->type = INTEL_OUTPUT_DSI;
 	intel_encoder->cloneable = 0;
 	drm_connector_init(dev, connector, &intel_dsi_connector_funcs,
diff --git a/drivers/gpu/drm/i915/intel_dsi.h b/drivers/gpu/drm/i915/intel_dsi.h
index 2784ac4..42a6859 100644
--- a/drivers/gpu/drm/i915/intel_dsi.h
+++ b/drivers/gpu/drm/i915/intel_dsi.h
@@ -42,6 +42,9 @@ struct intel_dsi {
 	struct drm_panel *panel;
 	struct intel_dsi_host *dsi_hosts[I915_MAX_PORTS];
 
+	/* GPIO Desc for CRC based Panel control */
+	struct gpio_desc *gpio_panel;
+
 	struct intel_connector *attached_connector;
 
 	/* bit mask of ports being driven */
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [v3 7/7] drm/i915: Backlight control using CRC PMIC based PWM driver
  2015-06-26  9:02 ` Shobhit Kumar
@ 2015-06-26  9:02   ` Shobhit Kumar
  -1 siblings, 0 replies; 32+ messages in thread
From: Shobhit Kumar @ 2015-06-26  9:02 UTC (permalink / raw)
  To: linux-pwm, intel-gfx, linux-kernel, dri-devel, linux-gpio
  Cc: Alexandre Courbot, Paul Bolle, Samuel Ortiz, Povilas Staniulis,
	Jani Nikula, Shobhit Kumar, Linus Walleij, varkabhadram,
	Paul Gortmaker, bloften80, David Airlie, Chih-Wei Huang,
	Thierry Reding, Daniel Vetter, Lee Jones

Use the CRC PWM device in intel_panel.c and add new MIPI backlight
specififc callbacks

v2: Modify to use pwm_config callback
v3: Addressed Jani's comments
    - Renamed all function as pwm_* instead of vlv_*
    - Call intel_panel_actually_set_backlight in enable function
    - Return -ENODEV in case pwm_get fails
    - in case pwm_config error return error cdoe from pwm_config
    - Cleanup pwm in intel_panel_destroy_backlight
v4: Removed unused #defines and initialized backlight with INVALID_PIPE (Ville)

CC: Samuel Ortiz <sameo@linux.intel.com>
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: Alexandre Courbot <gnurou@gmail.com>
Cc: Thierry Reding <thierry.reding@gmail.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Tested-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Shobhit Kumar <shobhit.kumar@intel.com>
---
 drivers/gpu/drm/i915/intel_drv.h   |  4 ++
 drivers/gpu/drm/i915/intel_dsi.c   |  5 ++
 drivers/gpu/drm/i915/intel_panel.c | 94 ++++++++++++++++++++++++++++++++++++--
 3 files changed, 98 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
index 2afb31a..561c17f 100644
--- a/drivers/gpu/drm/i915/intel_drv.h
+++ b/drivers/gpu/drm/i915/intel_drv.h
@@ -182,6 +182,10 @@ struct intel_panel {
 		bool enabled;
 		bool combination_mode;	/* gen 2/4 only */
 		bool active_low_pwm;
+
+		/* PWM chip */
+		struct pwm_device *pwm;
+
 		struct backlight_device *device;
 	} backlight;
 
diff --git a/drivers/gpu/drm/i915/intel_dsi.c b/drivers/gpu/drm/i915/intel_dsi.c
index c4db74a..892b936 100644
--- a/drivers/gpu/drm/i915/intel_dsi.c
+++ b/drivers/gpu/drm/i915/intel_dsi.c
@@ -402,6 +402,8 @@ static void intel_dsi_enable(struct intel_encoder *encoder)
 
 		intel_dsi_port_enable(encoder);
 	}
+
+	intel_panel_enable_backlight(intel_dsi->attached_connector);
 }
 
 static void intel_dsi_pre_enable(struct intel_encoder *encoder)
@@ -466,6 +468,8 @@ static void intel_dsi_pre_disable(struct intel_encoder *encoder)
 
 	DRM_DEBUG_KMS("\n");
 
+	intel_panel_disable_backlight(intel_dsi->attached_connector);
+
 	if (is_vid_mode(intel_dsi)) {
 		/* Send Shutdown command to the panel in LP mode */
 		for_each_dsi_port(port, intel_dsi->ports)
@@ -1132,6 +1136,7 @@ void intel_dsi_init(struct drm_device *dev)
 	}
 
 	intel_panel_init(&intel_connector->panel, fixed_mode, NULL);
+	intel_panel_setup_backlight(connector, INVALID_PIPE);
 
 	return;
 
diff --git a/drivers/gpu/drm/i915/intel_panel.c b/drivers/gpu/drm/i915/intel_panel.c
index 7d83527..952fadc 100644
--- a/drivers/gpu/drm/i915/intel_panel.c
+++ b/drivers/gpu/drm/i915/intel_panel.c
@@ -32,8 +32,11 @@
 
 #include <linux/kernel.h>
 #include <linux/moduleparam.h>
+#include <linux/pwm.h>
 #include "intel_drv.h"
 
+#define CRC_PMIC_PWM_PERIOD_NS	21333
+
 void
 intel_fixed_panel_mode(const struct drm_display_mode *fixed_mode,
 		       struct drm_display_mode *adjusted_mode)
@@ -544,6 +547,15 @@ static u32 bxt_get_backlight(struct intel_connector *connector)
 	return I915_READ(BXT_BLC_PWM_DUTY1);
 }
 
+static u32 pwm_get_backlight(struct intel_connector *connector)
+{
+	struct intel_panel *panel = &connector->panel;
+	int duty_ns;
+
+	duty_ns = pwm_get_duty_cycle(panel->backlight.pwm);
+	return DIV_ROUND_UP(duty_ns * 100, CRC_PMIC_PWM_PERIOD_NS);
+}
+
 static u32 intel_panel_get_backlight(struct intel_connector *connector)
 {
 	struct drm_device *dev = connector->base.dev;
@@ -632,6 +644,14 @@ static void bxt_set_backlight(struct intel_connector *connector, u32 level)
 	I915_WRITE(BXT_BLC_PWM_DUTY1, level);
 }
 
+static void pwm_set_backlight(struct intel_connector *connector, u32 level)
+{
+	struct intel_panel *panel = &connector->panel;
+	int duty_ns = DIV_ROUND_UP(level * CRC_PMIC_PWM_PERIOD_NS, 100);
+
+	pwm_config(panel->backlight.pwm, duty_ns, CRC_PMIC_PWM_PERIOD_NS);
+}
+
 static void
 intel_panel_actually_set_backlight(struct intel_connector *connector, u32 level)
 {
@@ -769,6 +789,16 @@ static void bxt_disable_backlight(struct intel_connector *connector)
 	I915_WRITE(BXT_BLC_PWM_CTL1, tmp & ~BXT_BLC_PWM_ENABLE);
 }
 
+static void pwm_disable_backlight(struct intel_connector *connector)
+{
+	struct intel_panel *panel = &connector->panel;
+
+	/* Disable the backlight */
+	pwm_config(panel->backlight.pwm, 0, CRC_PMIC_PWM_PERIOD_NS);
+	usleep_range(2000, 3000);
+	pwm_disable(panel->backlight.pwm);
+}
+
 void intel_panel_disable_backlight(struct intel_connector *connector)
 {
 	struct drm_device *dev = connector->base.dev;
@@ -1002,6 +1032,14 @@ static void bxt_enable_backlight(struct intel_connector *connector)
 	I915_WRITE(BXT_BLC_PWM_CTL1, pwm_ctl | BXT_BLC_PWM_ENABLE);
 }
 
+static void pwm_enable_backlight(struct intel_connector *connector)
+{
+	struct intel_panel *panel = &connector->panel;
+
+	pwm_enable(panel->backlight.pwm);
+	intel_panel_actually_set_backlight(connector, panel->backlight.level);
+}
+
 void intel_panel_enable_backlight(struct intel_connector *connector)
 {
 	struct drm_device *dev = connector->base.dev;
@@ -1378,6 +1416,40 @@ bxt_setup_backlight(struct intel_connector *connector, enum pipe unused)
 	return 0;
 }
 
+static int pwm_setup_backlight(struct intel_connector *connector,
+			       enum pipe pipe)
+{
+	struct drm_device *dev = connector->base.dev;
+	struct intel_panel *panel = &connector->panel;
+	int retval;
+
+	/* Get the PWM chip for backlight control */
+	panel->backlight.pwm = pwm_get(dev->dev, "pwm_backlight");
+	if (IS_ERR(panel->backlight.pwm)) {
+		DRM_ERROR("Failed to own the pwm chip\n");
+		panel->backlight.pwm = NULL;
+		return -ENODEV;
+	}
+
+	retval = pwm_config(panel->backlight.pwm, CRC_PMIC_PWM_PERIOD_NS,
+			    CRC_PMIC_PWM_PERIOD_NS);
+	if (retval < 0) {
+		DRM_ERROR("Failed to configure the pwm chip\n");
+		pwm_put(panel->backlight.pwm);
+		panel->backlight.pwm = NULL;
+		return retval;
+	}
+
+	panel->backlight.min = 0; /* 0% */
+	panel->backlight.max = 100; /* 100% */
+	panel->backlight.level = DIV_ROUND_UP(
+				 pwm_get_duty_cycle(panel->backlight.pwm) * 100,
+				 CRC_PMIC_PWM_PERIOD_NS);
+	panel->backlight.enabled = panel->backlight.level != 0;
+
+	return 0;
+}
+
 int intel_panel_setup_backlight(struct drm_connector *connector, enum pipe pipe)
 {
 	struct drm_device *dev = connector->dev;
@@ -1421,6 +1493,10 @@ void intel_panel_destroy_backlight(struct drm_connector *connector)
 	struct intel_connector *intel_connector = to_intel_connector(connector);
 	struct intel_panel *panel = &intel_connector->panel;
 
+	/* dispose of the pwm */
+	if (panel->backlight.pwm)
+		pwm_put(panel->backlight.pwm);
+
 	panel->backlight.present = false;
 }
 
@@ -1448,11 +1524,19 @@ void intel_panel_init_backlight_funcs(struct drm_device *dev)
 		dev_priv->display.set_backlight = pch_set_backlight;
 		dev_priv->display.get_backlight = pch_get_backlight;
 	} else if (IS_VALLEYVIEW(dev)) {
-		dev_priv->display.setup_backlight = vlv_setup_backlight;
-		dev_priv->display.enable_backlight = vlv_enable_backlight;
-		dev_priv->display.disable_backlight = vlv_disable_backlight;
-		dev_priv->display.set_backlight = vlv_set_backlight;
-		dev_priv->display.get_backlight = vlv_get_backlight;
+		if (dev_priv->vbt.has_mipi) {
+			dev_priv->display.setup_backlight = pwm_setup_backlight;
+			dev_priv->display.enable_backlight = pwm_enable_backlight;
+			dev_priv->display.disable_backlight = pwm_disable_backlight;
+			dev_priv->display.set_backlight = pwm_set_backlight;
+			dev_priv->display.get_backlight = pwm_get_backlight;
+		} else {
+			dev_priv->display.setup_backlight = vlv_setup_backlight;
+			dev_priv->display.enable_backlight = vlv_enable_backlight;
+			dev_priv->display.disable_backlight = vlv_disable_backlight;
+			dev_priv->display.set_backlight = vlv_set_backlight;
+			dev_priv->display.get_backlight = vlv_get_backlight;
+		}
 	} else if (IS_GEN4(dev)) {
 		dev_priv->display.setup_backlight = i965_setup_backlight;
 		dev_priv->display.enable_backlight = i965_enable_backlight;
-- 
1.9.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [v3 7/7] drm/i915: Backlight control using CRC PMIC based PWM driver
@ 2015-06-26  9:02   ` Shobhit Kumar
  0 siblings, 0 replies; 32+ messages in thread
From: Shobhit Kumar @ 2015-06-26  9:02 UTC (permalink / raw)
  To: linux-pwm, intel-gfx, linux-kernel, dri-devel, linux-gpio
  Cc: Paul Bolle, Jani Nikula, Samuel Ortiz, Alexandre Courbot,
	David Airlie, Povilas Staniulis, Chih-Wei Huang, Thierry Reding,
	Daniel Vetter, Lee Jones, Linus Walleij, Paul Gortmaker,
	bloften80, varkabhadram, Shobhit Kumar

Use the CRC PWM device in intel_panel.c and add new MIPI backlight
specififc callbacks

v2: Modify to use pwm_config callback
v3: Addressed Jani's comments
    - Renamed all function as pwm_* instead of vlv_*
    - Call intel_panel_actually_set_backlight in enable function
    - Return -ENODEV in case pwm_get fails
    - in case pwm_config error return error cdoe from pwm_config
    - Cleanup pwm in intel_panel_destroy_backlight
v4: Removed unused #defines and initialized backlight with INVALID_PIPE (Ville)

CC: Samuel Ortiz <sameo@linux.intel.com>
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: Alexandre Courbot <gnurou@gmail.com>
Cc: Thierry Reding <thierry.reding@gmail.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Tested-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Shobhit Kumar <shobhit.kumar@intel.com>
---
 drivers/gpu/drm/i915/intel_drv.h   |  4 ++
 drivers/gpu/drm/i915/intel_dsi.c   |  5 ++
 drivers/gpu/drm/i915/intel_panel.c | 94 ++++++++++++++++++++++++++++++++++++--
 3 files changed, 98 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
index 2afb31a..561c17f 100644
--- a/drivers/gpu/drm/i915/intel_drv.h
+++ b/drivers/gpu/drm/i915/intel_drv.h
@@ -182,6 +182,10 @@ struct intel_panel {
 		bool enabled;
 		bool combination_mode;	/* gen 2/4 only */
 		bool active_low_pwm;
+
+		/* PWM chip */
+		struct pwm_device *pwm;
+
 		struct backlight_device *device;
 	} backlight;
 
diff --git a/drivers/gpu/drm/i915/intel_dsi.c b/drivers/gpu/drm/i915/intel_dsi.c
index c4db74a..892b936 100644
--- a/drivers/gpu/drm/i915/intel_dsi.c
+++ b/drivers/gpu/drm/i915/intel_dsi.c
@@ -402,6 +402,8 @@ static void intel_dsi_enable(struct intel_encoder *encoder)
 
 		intel_dsi_port_enable(encoder);
 	}
+
+	intel_panel_enable_backlight(intel_dsi->attached_connector);
 }
 
 static void intel_dsi_pre_enable(struct intel_encoder *encoder)
@@ -466,6 +468,8 @@ static void intel_dsi_pre_disable(struct intel_encoder *encoder)
 
 	DRM_DEBUG_KMS("\n");
 
+	intel_panel_disable_backlight(intel_dsi->attached_connector);
+
 	if (is_vid_mode(intel_dsi)) {
 		/* Send Shutdown command to the panel in LP mode */
 		for_each_dsi_port(port, intel_dsi->ports)
@@ -1132,6 +1136,7 @@ void intel_dsi_init(struct drm_device *dev)
 	}
 
 	intel_panel_init(&intel_connector->panel, fixed_mode, NULL);
+	intel_panel_setup_backlight(connector, INVALID_PIPE);
 
 	return;
 
diff --git a/drivers/gpu/drm/i915/intel_panel.c b/drivers/gpu/drm/i915/intel_panel.c
index 7d83527..952fadc 100644
--- a/drivers/gpu/drm/i915/intel_panel.c
+++ b/drivers/gpu/drm/i915/intel_panel.c
@@ -32,8 +32,11 @@
 
 #include <linux/kernel.h>
 #include <linux/moduleparam.h>
+#include <linux/pwm.h>
 #include "intel_drv.h"
 
+#define CRC_PMIC_PWM_PERIOD_NS	21333
+
 void
 intel_fixed_panel_mode(const struct drm_display_mode *fixed_mode,
 		       struct drm_display_mode *adjusted_mode)
@@ -544,6 +547,15 @@ static u32 bxt_get_backlight(struct intel_connector *connector)
 	return I915_READ(BXT_BLC_PWM_DUTY1);
 }
 
+static u32 pwm_get_backlight(struct intel_connector *connector)
+{
+	struct intel_panel *panel = &connector->panel;
+	int duty_ns;
+
+	duty_ns = pwm_get_duty_cycle(panel->backlight.pwm);
+	return DIV_ROUND_UP(duty_ns * 100, CRC_PMIC_PWM_PERIOD_NS);
+}
+
 static u32 intel_panel_get_backlight(struct intel_connector *connector)
 {
 	struct drm_device *dev = connector->base.dev;
@@ -632,6 +644,14 @@ static void bxt_set_backlight(struct intel_connector *connector, u32 level)
 	I915_WRITE(BXT_BLC_PWM_DUTY1, level);
 }
 
+static void pwm_set_backlight(struct intel_connector *connector, u32 level)
+{
+	struct intel_panel *panel = &connector->panel;
+	int duty_ns = DIV_ROUND_UP(level * CRC_PMIC_PWM_PERIOD_NS, 100);
+
+	pwm_config(panel->backlight.pwm, duty_ns, CRC_PMIC_PWM_PERIOD_NS);
+}
+
 static void
 intel_panel_actually_set_backlight(struct intel_connector *connector, u32 level)
 {
@@ -769,6 +789,16 @@ static void bxt_disable_backlight(struct intel_connector *connector)
 	I915_WRITE(BXT_BLC_PWM_CTL1, tmp & ~BXT_BLC_PWM_ENABLE);
 }
 
+static void pwm_disable_backlight(struct intel_connector *connector)
+{
+	struct intel_panel *panel = &connector->panel;
+
+	/* Disable the backlight */
+	pwm_config(panel->backlight.pwm, 0, CRC_PMIC_PWM_PERIOD_NS);
+	usleep_range(2000, 3000);
+	pwm_disable(panel->backlight.pwm);
+}
+
 void intel_panel_disable_backlight(struct intel_connector *connector)
 {
 	struct drm_device *dev = connector->base.dev;
@@ -1002,6 +1032,14 @@ static void bxt_enable_backlight(struct intel_connector *connector)
 	I915_WRITE(BXT_BLC_PWM_CTL1, pwm_ctl | BXT_BLC_PWM_ENABLE);
 }
 
+static void pwm_enable_backlight(struct intel_connector *connector)
+{
+	struct intel_panel *panel = &connector->panel;
+
+	pwm_enable(panel->backlight.pwm);
+	intel_panel_actually_set_backlight(connector, panel->backlight.level);
+}
+
 void intel_panel_enable_backlight(struct intel_connector *connector)
 {
 	struct drm_device *dev = connector->base.dev;
@@ -1378,6 +1416,40 @@ bxt_setup_backlight(struct intel_connector *connector, enum pipe unused)
 	return 0;
 }
 
+static int pwm_setup_backlight(struct intel_connector *connector,
+			       enum pipe pipe)
+{
+	struct drm_device *dev = connector->base.dev;
+	struct intel_panel *panel = &connector->panel;
+	int retval;
+
+	/* Get the PWM chip for backlight control */
+	panel->backlight.pwm = pwm_get(dev->dev, "pwm_backlight");
+	if (IS_ERR(panel->backlight.pwm)) {
+		DRM_ERROR("Failed to own the pwm chip\n");
+		panel->backlight.pwm = NULL;
+		return -ENODEV;
+	}
+
+	retval = pwm_config(panel->backlight.pwm, CRC_PMIC_PWM_PERIOD_NS,
+			    CRC_PMIC_PWM_PERIOD_NS);
+	if (retval < 0) {
+		DRM_ERROR("Failed to configure the pwm chip\n");
+		pwm_put(panel->backlight.pwm);
+		panel->backlight.pwm = NULL;
+		return retval;
+	}
+
+	panel->backlight.min = 0; /* 0% */
+	panel->backlight.max = 100; /* 100% */
+	panel->backlight.level = DIV_ROUND_UP(
+				 pwm_get_duty_cycle(panel->backlight.pwm) * 100,
+				 CRC_PMIC_PWM_PERIOD_NS);
+	panel->backlight.enabled = panel->backlight.level != 0;
+
+	return 0;
+}
+
 int intel_panel_setup_backlight(struct drm_connector *connector, enum pipe pipe)
 {
 	struct drm_device *dev = connector->dev;
@@ -1421,6 +1493,10 @@ void intel_panel_destroy_backlight(struct drm_connector *connector)
 	struct intel_connector *intel_connector = to_intel_connector(connector);
 	struct intel_panel *panel = &intel_connector->panel;
 
+	/* dispose of the pwm */
+	if (panel->backlight.pwm)
+		pwm_put(panel->backlight.pwm);
+
 	panel->backlight.present = false;
 }
 
@@ -1448,11 +1524,19 @@ void intel_panel_init_backlight_funcs(struct drm_device *dev)
 		dev_priv->display.set_backlight = pch_set_backlight;
 		dev_priv->display.get_backlight = pch_get_backlight;
 	} else if (IS_VALLEYVIEW(dev)) {
-		dev_priv->display.setup_backlight = vlv_setup_backlight;
-		dev_priv->display.enable_backlight = vlv_enable_backlight;
-		dev_priv->display.disable_backlight = vlv_disable_backlight;
-		dev_priv->display.set_backlight = vlv_set_backlight;
-		dev_priv->display.get_backlight = vlv_get_backlight;
+		if (dev_priv->vbt.has_mipi) {
+			dev_priv->display.setup_backlight = pwm_setup_backlight;
+			dev_priv->display.enable_backlight = pwm_enable_backlight;
+			dev_priv->display.disable_backlight = pwm_disable_backlight;
+			dev_priv->display.set_backlight = pwm_set_backlight;
+			dev_priv->display.get_backlight = pwm_get_backlight;
+		} else {
+			dev_priv->display.setup_backlight = vlv_setup_backlight;
+			dev_priv->display.enable_backlight = vlv_enable_backlight;
+			dev_priv->display.disable_backlight = vlv_disable_backlight;
+			dev_priv->display.set_backlight = vlv_set_backlight;
+			dev_priv->display.get_backlight = vlv_get_backlight;
+		}
 	} else if (IS_GEN4(dev)) {
 		dev_priv->display.setup_backlight = i965_setup_backlight;
 		dev_priv->display.enable_backlight = i965_enable_backlight;
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 32+ messages in thread

* Re: [v3 5/7] pwm: crc: Add Crystalcove (CRC) PWM driver
  2015-06-26  9:02   ` Shobhit Kumar
@ 2015-06-26 12:31     ` Varka Bhadram
  -1 siblings, 0 replies; 32+ messages in thread
From: Varka Bhadram @ 2015-06-26 12:31 UTC (permalink / raw)
  To: Shobhit Kumar, linux-pwm, intel-gfx, linux-kernel, dri-devel, linux-gpio
  Cc: Alexandre Courbot, Paul Bolle, Samuel Ortiz, Povilas Staniulis,
	Jani Nikula, Linus Walleij, Paul Gortmaker, bloften80,
	David Airlie, Chih-Wei Huang, Thierry Reding, Daniel Vetter,
	Lee Jones

On 06/26/2015 02:32 PM, Shobhit Kumar wrote:
> The Crystalcove PMIC provides three PWM signals and this driver exports
> one of them on the BYT platform which is used to control backlight for
> DSI panel. This is platform device implementation of the drivers/mfd
> cell device for CRC PMIC.
>
> CC: Samuel Ortiz <sameo@linux.intel.com>
> Cc: Linus Walleij <linus.walleij@linaro.org>
> Cc: Alexandre Courbot <gnurou@gmail.com>
> Cc: Thierry Reding <thierry.reding@gmail.com>
> Cc: Paul Bolle <pebolle@tiscali.nl>
> Cc: Paul Gortmaker <paul.gortmaker@windriver.com>
> Tested-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Signed-off-by: Shobhit Kumar <shobhit.kumar@intel.com>
> ---
> v2: Use the existing config callback with duty_ns and period_ns(Thierry)
>
> v3: Correct the subject line (Lee jones)
>
> v4: Address comment by Thierry & Paul
>      - Commit message update and fixes for few syntax errors
>      - Add PWM_CRC in Kconfig and Makefile sorted alphabetically
>      - Use the PWM_BASE_CLK as 6000000 for better code readability
>      - Remove the redundant rule of three while calculating pwm level
>      - Use the platform_device in pwm_chip
>      - Use builin_platform_driver
>
> v5: Address comments by Varka
>      - Make the bit definition using BIT macro
>      - reorder probe and remove code to directly return from pwmchip_add/remove
>
>   drivers/pwm/Kconfig   |   7 +++
>   drivers/pwm/Makefile  |   1 +
>   drivers/pwm/pwm-crc.c | 143 ++++++++++++++++++++++++++++++++++++++++++++++++++
>   3 files changed, 151 insertions(+)
>   create mode 100644 drivers/pwm/pwm-crc.c

Reviewed-by: Varka Bhadram <varkabhadram@gmail.com>

-- 
Best regards,
Varka Bhadram.

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [v3 5/7] pwm: crc: Add Crystalcove (CRC) PWM driver
@ 2015-06-26 12:31     ` Varka Bhadram
  0 siblings, 0 replies; 32+ messages in thread
From: Varka Bhadram @ 2015-06-26 12:31 UTC (permalink / raw)
  To: Shobhit Kumar, linux-pwm, intel-gfx, linux-kernel, dri-devel, linux-gpio
  Cc: Paul Bolle, Jani Nikula, Samuel Ortiz, Alexandre Courbot,
	David Airlie, Povilas Staniulis, Chih-Wei Huang, Thierry Reding,
	Daniel Vetter, Lee Jones, Linus Walleij, Paul Gortmaker,
	bloften80

On 06/26/2015 02:32 PM, Shobhit Kumar wrote:
> The Crystalcove PMIC provides three PWM signals and this driver exports
> one of them on the BYT platform which is used to control backlight for
> DSI panel. This is platform device implementation of the drivers/mfd
> cell device for CRC PMIC.
>
> CC: Samuel Ortiz <sameo@linux.intel.com>
> Cc: Linus Walleij <linus.walleij@linaro.org>
> Cc: Alexandre Courbot <gnurou@gmail.com>
> Cc: Thierry Reding <thierry.reding@gmail.com>
> Cc: Paul Bolle <pebolle@tiscali.nl>
> Cc: Paul Gortmaker <paul.gortmaker@windriver.com>
> Tested-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Signed-off-by: Shobhit Kumar <shobhit.kumar@intel.com>
> ---
> v2: Use the existing config callback with duty_ns and period_ns(Thierry)
>
> v3: Correct the subject line (Lee jones)
>
> v4: Address comment by Thierry & Paul
>      - Commit message update and fixes for few syntax errors
>      - Add PWM_CRC in Kconfig and Makefile sorted alphabetically
>      - Use the PWM_BASE_CLK as 6000000 for better code readability
>      - Remove the redundant rule of three while calculating pwm level
>      - Use the platform_device in pwm_chip
>      - Use builin_platform_driver
>
> v5: Address comments by Varka
>      - Make the bit definition using BIT macro
>      - reorder probe and remove code to directly return from pwmchip_add/remove
>
>   drivers/pwm/Kconfig   |   7 +++
>   drivers/pwm/Makefile  |   1 +
>   drivers/pwm/pwm-crc.c | 143 ++++++++++++++++++++++++++++++++++++++++++++++++++
>   3 files changed, 151 insertions(+)
>   create mode 100644 drivers/pwm/pwm-crc.c

Reviewed-by: Varka Bhadram <varkabhadram@gmail.com>

-- 
Best regards,
Varka Bhadram.


^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [Intel-gfx] [v3 0/7] Crystalcove (CRC) PMIC based panel and pwm control
  2015-06-26  9:02 ` Shobhit Kumar
                   ` (7 preceding siblings ...)
  (?)
@ 2015-06-26 16:31 ` Daniel Vetter
  2015-06-26 17:47     ` [Intel-gfx] " Ville Syrjälä
  -1 siblings, 1 reply; 32+ messages in thread
From: Daniel Vetter @ 2015-06-26 16:31 UTC (permalink / raw)
  To: Shobhit Kumar
  Cc: linux-pwm, intel-gfx, linux-kernel, dri-devel, linux-gpio,
	Alexandre Courbot, Paul Bolle, Samuel Ortiz, Povilas Staniulis,
	Jani Nikula, Linus Walleij, varkabhadram, Paul Gortmaker,
	bloften80, David Airlie, Chih-Wei Huang, Thierry Reding,
	Daniel Vetter, Lee Jones

On Fri, Jun 26, 2015 at 02:32:03PM +0530, Shobhit Kumar wrote:
> Hi,
> Next update of the series reviewed at 
> https://lkml.org/lkml/2015/6/22/155
> 
> Major changes are few review comments from Varka and Ville being addressed. Also except
> for intel-gfx patches, all patches reviesion history is moved out of commit message.
> 
> Hope this series finally finds its mark.
> 
> Regards
> Shobhit
> 
> Shobhit Kumar (7):
>   gpiolib: Add support for removing registered consumer lookup table
>   mfd: intel_soc_pmic_core: Add lookup table for Panel Control as GPIO
>     signal
>   mfd: intel_soc_pmic_crc: Add PWM cell device for Crystalcove PMIC
>   mfd: intel_soc_pmic_core: ADD PWM lookup table for CRC PMIC based PWM
>   pwm: crc: Add Crystalcove (CRC) PWM driver
>   drm/i915: Use the CRC gpio for panel enable/disable
>   drm/i915: Backlight control using CRC PMIC based PWM driver

I think we have r-b/acks on all the patches now. Ok if I pull this in
through drm-intel.git for 4.3? Or should I make a topic branch with tag
and then send out pull requests to everyone? Or will each maintainer merge
on their own since it's all only coupled at runtime anyway? Any of these
would suit me.

Thanks, Daniel

> 
>  drivers/gpio/gpiolib.c             |  13 ++++
>  drivers/gpu/drm/i915/intel_bios.h  |   7 ++
>  drivers/gpu/drm/i915/intel_drv.h   |   4 ++
>  drivers/gpu/drm/i915/intel_dsi.c   |  37 +++++++++-
>  drivers/gpu/drm/i915/intel_dsi.h   |   3 +
>  drivers/gpu/drm/i915/intel_panel.c |  94 ++++++++++++++++++++++--
>  drivers/mfd/intel_soc_pmic_core.c  |  29 ++++++++
>  drivers/mfd/intel_soc_pmic_crc.c   |   3 +
>  drivers/pwm/Kconfig                |   7 ++
>  drivers/pwm/Makefile               |   1 +
>  drivers/pwm/pwm-crc.c              | 143 +++++++++++++++++++++++++++++++++++++
>  include/linux/gpio/machine.h       |   1 +
>  12 files changed, 335 insertions(+), 7 deletions(-)
>  create mode 100644 drivers/pwm/pwm-crc.c
> 
> -- 
> 1.9.1
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch

^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [v3 0/7] Crystalcove (CRC) PMIC based panel and pwm control
  2015-06-26 16:31 ` [Intel-gfx] [v3 0/7] Crystalcove (CRC) PMIC based panel and pwm control Daniel Vetter
@ 2015-06-26 17:47     ` Ville Syrjälä
  0 siblings, 0 replies; 32+ messages in thread
From: Ville Syrjälä @ 2015-06-26 17:47 UTC (permalink / raw)
  To: Shobhit Kumar, linux-pwm, intel-gfx, linux-kernel, dri-devel,
	linux-gpio, Alexandre Courbot, Paul Bolle, Samuel Ortiz,
	Povilas Staniulis, Jani Nikula, Linus Walleij, varkabhadram,
	Paul Gortmaker, bloften80, David Airlie, Chih-Wei Huang,
	Thierry Reding, Daniel Vetter, Lee Jones

On Fri, Jun 26, 2015 at 06:31:37PM +0200, Daniel Vetter wrote:
> On Fri, Jun 26, 2015 at 02:32:03PM +0530, Shobhit Kumar wrote:
> > Hi,
> > Next update of the series reviewed at 
> > https://lkml.org/lkml/2015/6/22/155
> > 
> > Major changes are few review comments from Varka and Ville being addressed. Also except
> > for intel-gfx patches, all patches reviesion history is moved out of commit message.
> > 
> > Hope this series finally finds its mark.
> > 
> > Regards
> > Shobhit
> > 
> > Shobhit Kumar (7):
> >   gpiolib: Add support for removing registered consumer lookup table
> >   mfd: intel_soc_pmic_core: Add lookup table for Panel Control as GPIO
> >     signal
> >   mfd: intel_soc_pmic_crc: Add PWM cell device for Crystalcove PMIC
> >   mfd: intel_soc_pmic_core: ADD PWM lookup table for CRC PMIC based PWM
> >   pwm: crc: Add Crystalcove (CRC) PWM driver
> >   drm/i915: Use the CRC gpio for panel enable/disable
> >   drm/i915: Backlight control using CRC PMIC based PWM driver
> 
> I think we have r-b/acks on all the patches now. Ok if I pull this in
> through drm-intel.git for 4.3? Or should I make a topic branch with tag
> and then send out pull requests to everyone? Or will each maintainer merge
> on their own since it's all only coupled at runtime anyway? Any of these
> would suit me.

I forgot to mention that I had a build failure due to
builtin_platform_driver() when I tried this (just changed it to
module_platform_driver() to get past it). So I'm not sure if this
now depends on some tree which isn't included in -nightly...

-- 
Ville Syrjälä
Intel OTC
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [Intel-gfx] [v3 0/7] Crystalcove (CRC) PMIC based panel and pwm control
@ 2015-06-26 17:47     ` Ville Syrjälä
  0 siblings, 0 replies; 32+ messages in thread
From: Ville Syrjälä @ 2015-06-26 17:47 UTC (permalink / raw)
  To: Shobhit Kumar, linux-pwm, intel-gfx, linux-kernel, dri-devel,
	linux-gpio, Alexandre Courbot, Paul Bolle, Samuel Ortiz,
	Povilas Staniulis, Jani Nikula, Linus Walleij, varkabhadram,
	Paul Gortmaker, bloften80, David Airlie, Chih-Wei Huang,
	Thierry Reding, Daniel Vetter, Lee Jones

On Fri, Jun 26, 2015 at 06:31:37PM +0200, Daniel Vetter wrote:
> On Fri, Jun 26, 2015 at 02:32:03PM +0530, Shobhit Kumar wrote:
> > Hi,
> > Next update of the series reviewed at 
> > https://lkml.org/lkml/2015/6/22/155
> > 
> > Major changes are few review comments from Varka and Ville being addressed. Also except
> > for intel-gfx patches, all patches reviesion history is moved out of commit message.
> > 
> > Hope this series finally finds its mark.
> > 
> > Regards
> > Shobhit
> > 
> > Shobhit Kumar (7):
> >   gpiolib: Add support for removing registered consumer lookup table
> >   mfd: intel_soc_pmic_core: Add lookup table for Panel Control as GPIO
> >     signal
> >   mfd: intel_soc_pmic_crc: Add PWM cell device for Crystalcove PMIC
> >   mfd: intel_soc_pmic_core: ADD PWM lookup table for CRC PMIC based PWM
> >   pwm: crc: Add Crystalcove (CRC) PWM driver
> >   drm/i915: Use the CRC gpio for panel enable/disable
> >   drm/i915: Backlight control using CRC PMIC based PWM driver
> 
> I think we have r-b/acks on all the patches now. Ok if I pull this in
> through drm-intel.git for 4.3? Or should I make a topic branch with tag
> and then send out pull requests to everyone? Or will each maintainer merge
> on their own since it's all only coupled at runtime anyway? Any of these
> would suit me.

I forgot to mention that I had a build failure due to
builtin_platform_driver() when I tried this (just changed it to
module_platform_driver() to get past it). So I'm not sure if this
now depends on some tree which isn't included in -nightly...

-- 
Ville Syrjälä
Intel OTC

^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [v3 0/7] Crystalcove (CRC) PMIC based panel and pwm control
  2015-06-26 17:47     ` [Intel-gfx] " Ville Syrjälä
@ 2015-06-28  2:28       ` Shobhit Kumar
  -1 siblings, 0 replies; 32+ messages in thread
From: Shobhit Kumar @ 2015-06-28  2:28 UTC (permalink / raw)
  To: Ville Syrjälä
  Cc: linux-pwm, Paul Bolle, Samuel Ortiz, Alexandre Courbot,
	Jani Nikula, Shobhit Kumar, intel-gfx, Varka Bhadram,
	Paul Gortmaker, linux-kernel, dri-devel, linux-gpio, Brain WrecK,
	Povilas Staniulis, Thierry Reding, David Airlie, Daniel Vetter,
	Lee Jones, Linus Walleij, Chih-Wei Huang

On Fri, Jun 26, 2015 at 11:17 PM, Ville Syrjälä
<ville.syrjala@linux.intel.com> wrote:
> On Fri, Jun 26, 2015 at 06:31:37PM +0200, Daniel Vetter wrote:
>> On Fri, Jun 26, 2015 at 02:32:03PM +0530, Shobhit Kumar wrote:
>> > Hi,
>> > Next update of the series reviewed at
>> > https://lkml.org/lkml/2015/6/22/155
>> >
>> > Major changes are few review comments from Varka and Ville being addressed. Also except
>> > for intel-gfx patches, all patches reviesion history is moved out of commit message.
>> >
>> > Hope this series finally finds its mark.
>> >
>> > Regards
>> > Shobhit
>> >
>> > Shobhit Kumar (7):
>> >   gpiolib: Add support for removing registered consumer lookup table
>> >   mfd: intel_soc_pmic_core: Add lookup table for Panel Control as GPIO
>> >     signal
>> >   mfd: intel_soc_pmic_crc: Add PWM cell device for Crystalcove PMIC
>> >   mfd: intel_soc_pmic_core: ADD PWM lookup table for CRC PMIC based PWM
>> >   pwm: crc: Add Crystalcove (CRC) PWM driver
>> >   drm/i915: Use the CRC gpio for panel enable/disable
>> >   drm/i915: Backlight control using CRC PMIC based PWM driver
>>
>> I think we have r-b/acks on all the patches now. Ok if I pull this in
>> through drm-intel.git for 4.3? Or should I make a topic branch with tag
>> and then send out pull requests to everyone? Or will each maintainer merge
>> on their own since it's all only coupled at runtime anyway? Any of these
>> would suit me.
>
> I forgot to mention that I had a build failure due to
> builtin_platform_driver() when I tried this (just changed it to
> module_platform_driver() to get past it). So I'm not sure if this
> now depends on some tree which isn't included in -nightly...

These patches are based on linux-next/master

Regards
Shobhit
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [Intel-gfx] [v3 0/7] Crystalcove (CRC) PMIC based panel and pwm control
@ 2015-06-28  2:28       ` Shobhit Kumar
  0 siblings, 0 replies; 32+ messages in thread
From: Shobhit Kumar @ 2015-06-28  2:28 UTC (permalink / raw)
  To: Ville Syrjälä
  Cc: Shobhit Kumar, linux-pwm, intel-gfx, linux-kernel, dri-devel,
	linux-gpio, Alexandre Courbot, Paul Bolle, Samuel Ortiz,
	Povilas Staniulis, Jani Nikula, Linus Walleij, Varka Bhadram,
	Paul Gortmaker, Brain WrecK, David Airlie, Chih-Wei Huang,
	Thierry Reding, Daniel Vetter, Lee Jones

On Fri, Jun 26, 2015 at 11:17 PM, Ville Syrjälä
<ville.syrjala@linux.intel.com> wrote:
> On Fri, Jun 26, 2015 at 06:31:37PM +0200, Daniel Vetter wrote:
>> On Fri, Jun 26, 2015 at 02:32:03PM +0530, Shobhit Kumar wrote:
>> > Hi,
>> > Next update of the series reviewed at
>> > https://lkml.org/lkml/2015/6/22/155
>> >
>> > Major changes are few review comments from Varka and Ville being addressed. Also except
>> > for intel-gfx patches, all patches reviesion history is moved out of commit message.
>> >
>> > Hope this series finally finds its mark.
>> >
>> > Regards
>> > Shobhit
>> >
>> > Shobhit Kumar (7):
>> >   gpiolib: Add support for removing registered consumer lookup table
>> >   mfd: intel_soc_pmic_core: Add lookup table for Panel Control as GPIO
>> >     signal
>> >   mfd: intel_soc_pmic_crc: Add PWM cell device for Crystalcove PMIC
>> >   mfd: intel_soc_pmic_core: ADD PWM lookup table for CRC PMIC based PWM
>> >   pwm: crc: Add Crystalcove (CRC) PWM driver
>> >   drm/i915: Use the CRC gpio for panel enable/disable
>> >   drm/i915: Backlight control using CRC PMIC based PWM driver
>>
>> I think we have r-b/acks on all the patches now. Ok if I pull this in
>> through drm-intel.git for 4.3? Or should I make a topic branch with tag
>> and then send out pull requests to everyone? Or will each maintainer merge
>> on their own since it's all only coupled at runtime anyway? Any of these
>> would suit me.
>
> I forgot to mention that I had a build failure due to
> builtin_platform_driver() when I tried this (just changed it to
> module_platform_driver() to get past it). So I'm not sure if this
> now depends on some tree which isn't included in -nightly...

These patches are based on linux-next/master

Regards
Shobhit

^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [Intel-gfx] [v3 0/7] Crystalcove (CRC) PMIC based panel and pwm control
  2015-06-26 17:47     ` [Intel-gfx] " Ville Syrjälä
@ 2015-06-28 22:18       ` Paul Gortmaker
  -1 siblings, 0 replies; 32+ messages in thread
From: Paul Gortmaker @ 2015-06-28 22:18 UTC (permalink / raw)
  To: Ville Syrjälä
  Cc: Shobhit Kumar, linux-pwm, intel-gfx, linux-kernel, dri-devel,
	linux-gpio, Alexandre Courbot, Paul Bolle, Samuel Ortiz,
	Povilas Staniulis, Jani Nikula, Linus Walleij, varkabhadram,
	bloften80, David Airlie, Chih-Wei Huang, Thierry Reding,
	Daniel Vetter, Lee Jones

[Re: [Intel-gfx] [v3 0/7] Crystalcove (CRC) PMIC based panel and pwm control] On 26/06/2015 (Fri 20:47) Ville Syrjälä wrote:

> On Fri, Jun 26, 2015 at 06:31:37PM +0200, Daniel Vetter wrote:
> > On Fri, Jun 26, 2015 at 02:32:03PM +0530, Shobhit Kumar wrote:
> > > Hi,
> > > Next update of the series reviewed at 
> > > https://lkml.org/lkml/2015/6/22/155
> > > 
> > > Major changes are few review comments from Varka and Ville being addressed. Also except
> > > for intel-gfx patches, all patches reviesion history is moved out of commit message.
> > > 
> > > Hope this series finally finds its mark.
> > > 
> > > Regards
> > > Shobhit
> > > 
> > > Shobhit Kumar (7):
> > >   gpiolib: Add support for removing registered consumer lookup table
> > >   mfd: intel_soc_pmic_core: Add lookup table for Panel Control as GPIO
> > >     signal
> > >   mfd: intel_soc_pmic_crc: Add PWM cell device for Crystalcove PMIC
> > >   mfd: intel_soc_pmic_core: ADD PWM lookup table for CRC PMIC based PWM
> > >   pwm: crc: Add Crystalcove (CRC) PWM driver
> > >   drm/i915: Use the CRC gpio for panel enable/disable
> > >   drm/i915: Backlight control using CRC PMIC based PWM driver
> > 
> > I think we have r-b/acks on all the patches now. Ok if I pull this in
> > through drm-intel.git for 4.3? Or should I make a topic branch with tag
> > and then send out pull requests to everyone? Or will each maintainer merge
> > on their own since it's all only coupled at runtime anyway? Any of these
> > would suit me.
> 
> I forgot to mention that I had a build failure due to
> builtin_platform_driver() when I tried this (just changed it to
> module_platform_driver() to get past it). So I'm not sure if this
> now depends on some tree which isn't included in -nightly...

builtin_platform_register does not yet exist in mainline; as Paul (the
other one) said earlier.  So you can either open-code what it does for
now, or use  module_platform_register.  If you do the latter, then
ensure you (temorarily) also include module.h or you risk additional
breakage in the future.

Paul.
--

> 
> -- 
> Ville Syrjälä
> Intel OTC

^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [Intel-gfx] [v3 0/7] Crystalcove (CRC) PMIC based panel and pwm control
@ 2015-06-28 22:18       ` Paul Gortmaker
  0 siblings, 0 replies; 32+ messages in thread
From: Paul Gortmaker @ 2015-06-28 22:18 UTC (permalink / raw)
  To: Ville Syrjälä
  Cc: Shobhit Kumar, linux-pwm, intel-gfx, linux-kernel, dri-devel,
	linux-gpio, Alexandre Courbot, Paul Bolle, Samuel Ortiz,
	Povilas Staniulis, Jani Nikula, Linus Walleij, varkabhadram,
	bloften80, David Airlie, Chih-Wei Huang, Thierry Reding,
	Daniel Vetter, Lee Jones

[Re: [Intel-gfx] [v3 0/7] Crystalcove (CRC) PMIC based panel and pwm control] On 26/06/2015 (Fri 20:47) Ville Syrjälä wrote:

> On Fri, Jun 26, 2015 at 06:31:37PM +0200, Daniel Vetter wrote:
> > On Fri, Jun 26, 2015 at 02:32:03PM +0530, Shobhit Kumar wrote:
> > > Hi,
> > > Next update of the series reviewed at 
> > > https://lkml.org/lkml/2015/6/22/155
> > > 
> > > Major changes are few review comments from Varka and Ville being addressed. Also except
> > > for intel-gfx patches, all patches reviesion history is moved out of commit message.
> > > 
> > > Hope this series finally finds its mark.
> > > 
> > > Regards
> > > Shobhit
> > > 
> > > Shobhit Kumar (7):
> > >   gpiolib: Add support for removing registered consumer lookup table
> > >   mfd: intel_soc_pmic_core: Add lookup table for Panel Control as GPIO
> > >     signal
> > >   mfd: intel_soc_pmic_crc: Add PWM cell device for Crystalcove PMIC
> > >   mfd: intel_soc_pmic_core: ADD PWM lookup table for CRC PMIC based PWM
> > >   pwm: crc: Add Crystalcove (CRC) PWM driver
> > >   drm/i915: Use the CRC gpio for panel enable/disable
> > >   drm/i915: Backlight control using CRC PMIC based PWM driver
> > 
> > I think we have r-b/acks on all the patches now. Ok if I pull this in
> > through drm-intel.git for 4.3? Or should I make a topic branch with tag
> > and then send out pull requests to everyone? Or will each maintainer merge
> > on their own since it's all only coupled at runtime anyway? Any of these
> > would suit me.
> 
> I forgot to mention that I had a build failure due to
> builtin_platform_driver() when I tried this (just changed it to
> module_platform_driver() to get past it). So I'm not sure if this
> now depends on some tree which isn't included in -nightly...

builtin_platform_register does not yet exist in mainline; as Paul (the
other one) said earlier.  So you can either open-code what it does for
now, or use  module_platform_register.  If you do the latter, then
ensure you (temorarily) also include module.h or you risk additional
breakage in the future.

Paul.
--

> 
> -- 
> Ville Syrjälä
> Intel OTC

^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [v3 0/7] Crystalcove (CRC) PMIC based panel and pwm control
  2015-06-28 22:18       ` Paul Gortmaker
  (?)
@ 2015-06-30  4:37       ` Brain WrecK
  -1 siblings, 0 replies; 32+ messages in thread
From: Brain WrecK @ 2015-06-30  4:37 UTC (permalink / raw)
  To: Paul Gortmaker
  Cc: linux-pwm, Paul Bolle, Samuel Ortiz, Alexandre Courbot,
	Jani Nikula, Shobhit Kumar, intel-gfx, varkabhadram,
	linux-kernel, dri-devel, linux-gpio, Chih-Wei Huang,
	Povilas Staniulis, Thierry Reding, David Airlie, Daniel Vetter,
	Lee Jones, Linus Walleij


[-- Attachment #1.1: Type: text/plain, Size: 2651 bytes --]

Tested by Brian Loften, "Brain Wreck" bloften80@gmail.com confirmed working
on ASUS T100TA, kernel 20150629 -next running 15.04 i386 Ubuntu Gnome --
suspend resume is functioning normally, backlight controls work before and
after resume using slide controls and meta keys on keyboard

On Sun, Jun 28, 2015 at 4:18 PM, Paul Gortmaker <
paul.gortmaker@windriver.com> wrote:

> [Re: [Intel-gfx] [v3 0/7] Crystalcove (CRC) PMIC based panel and pwm
> control] On 26/06/2015 (Fri 20:47) Ville Syrjälä wrote:
>
> > On Fri, Jun 26, 2015 at 06:31:37PM +0200, Daniel Vetter wrote:
> > > On Fri, Jun 26, 2015 at 02:32:03PM +0530, Shobhit Kumar wrote:
> > > > Hi,
> > > > Next update of the series reviewed at
> > > > https://lkml.org/lkml/2015/6/22/155
> > > >
> > > > Major changes are few review comments from Varka and Ville being
> addressed. Also except
> > > > for intel-gfx patches, all patches reviesion history is moved out of
> commit message.
> > > >
> > > > Hope this series finally finds its mark.
> > > >
> > > > Regards
> > > > Shobhit
> > > >
> > > > Shobhit Kumar (7):
> > > >   gpiolib: Add support for removing registered consumer lookup table
> > > >   mfd: intel_soc_pmic_core: Add lookup table for Panel Control as
> GPIO
> > > >     signal
> > > >   mfd: intel_soc_pmic_crc: Add PWM cell device for Crystalcove PMIC
> > > >   mfd: intel_soc_pmic_core: ADD PWM lookup table for CRC PMIC based
> PWM
> > > >   pwm: crc: Add Crystalcove (CRC) PWM driver
> > > >   drm/i915: Use the CRC gpio for panel enable/disable
> > > >   drm/i915: Backlight control using CRC PMIC based PWM driver
> > >
> > > I think we have r-b/acks on all the patches now. Ok if I pull this in
> > > through drm-intel.git for 4.3? Or should I make a topic branch with tag
> > > and then send out pull requests to everyone? Or will each maintainer
> merge
> > > on their own since it's all only coupled at runtime anyway? Any of
> these
> > > would suit me.
> >
> > I forgot to mention that I had a build failure due to
> > builtin_platform_driver() when I tried this (just changed it to
> > module_platform_driver() to get past it). So I'm not sure if this
> > now depends on some tree which isn't included in -nightly...
>
> builtin_platform_register does not yet exist in mainline; as Paul (the
> other one) said earlier.  So you can either open-code what it does for
> now, or use  module_platform_register.  If you do the latter, then
> ensure you (temorarily) also include module.h or you risk additional
> breakage in the future.
>
> Paul.
> --
>
> >
> > --
> > Ville Syrjälä
> > Intel OTC
>

[-- Attachment #1.2: Type: text/html, Size: 3707 bytes --]

[-- Attachment #2: Type: text/plain, Size: 159 bytes --]

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [v3 1/7] gpiolib: Add support for removing registered consumer lookup table
  2015-06-26  9:02   ` Shobhit Kumar
  (?)
@ 2015-07-01  7:46   ` Lee Jones
  -1 siblings, 0 replies; 32+ messages in thread
From: Lee Jones @ 2015-07-01  7:46 UTC (permalink / raw)
  To: Shobhit Kumar
  Cc: linux-pwm, intel-gfx, linux-kernel, dri-devel, linux-gpio,
	Paul Bolle, Jani Nikula, Samuel Ortiz, Alexandre Courbot,
	David Airlie, Povilas Staniulis, Chih-Wei Huang, Thierry Reding,
	Daniel Vetter, Linus Walleij, Paul Gortmaker, bloften80,
	varkabhadram

On Fri, 26 Jun 2015, Shobhit Kumar wrote:

> In case we unload and load a driver module again that is registering a
> lookup table, without this it will result in multiple entries. Provide
> an option to remove the lookup table on driver unload
> 
> Cc: Samuel Ortiz <sameo@linux.intel.com>
> Cc: Linus Walleij <linus.walleij@linaro.org>
> Cc: Alexandre Courbot <gnurou@gmail.com>
> Cc: Thierry Reding <thierry.reding@gmail.com>
> Reviewed-by: Alexandre Courbot <acourbot@nvidia.com>
> Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
> Tested-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Signed-off-by: Shobhit Kumar <shobhit.kumar@intel.com>
> ---
> v2: Ccing maintainers
> v3: Correct the subject line (Lee jones)

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

>  drivers/gpio/gpiolib.c       | 13 +++++++++++++
>  include/linux/gpio/machine.h |  1 +
>  2 files changed, 14 insertions(+)
> 
> diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
> index 957ede5..9d3ea4e 100644
> --- a/drivers/gpio/gpiolib.c
> +++ b/drivers/gpio/gpiolib.c
> @@ -1675,6 +1675,19 @@ void gpiod_add_lookup_table(struct gpiod_lookup_table *table)
>  	mutex_unlock(&gpio_lookup_lock);
>  }
>  
> +/**
> + * gpiod_remove_lookup_table() - unregister GPIO device consumers
> + * @table: table of consumers to unregister
> + */
> +void gpiod_remove_lookup_table(struct gpiod_lookup_table *table)
> +{
> +	mutex_lock(&gpio_lookup_lock);
> +
> +	list_del(&table->list);
> +
> +	mutex_unlock(&gpio_lookup_lock);
> +}
> +
>  static struct gpio_desc *of_find_gpio(struct device *dev, const char *con_id,
>  				      unsigned int idx,
>  				      enum gpio_lookup_flags *flags)
> diff --git a/include/linux/gpio/machine.h b/include/linux/gpio/machine.h
> index e270614..c0d712d 100644
> --- a/include/linux/gpio/machine.h
> +++ b/include/linux/gpio/machine.h
> @@ -57,5 +57,6 @@ struct gpiod_lookup_table {
>  }
>  
>  void gpiod_add_lookup_table(struct gpiod_lookup_table *table);
> +void gpiod_remove_lookup_table(struct gpiod_lookup_table *table);
>  
>  #endif /* __LINUX_GPIO_MACHINE_H */

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

^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [v3 0/7] Crystalcove (CRC) PMIC based panel and pwm control
  2015-06-28 22:18       ` Paul Gortmaker
@ 2015-07-10 13:06         ` Shobhit Kumar
  -1 siblings, 0 replies; 32+ messages in thread
From: Shobhit Kumar @ 2015-07-10 13:06 UTC (permalink / raw)
  To: Paul Gortmaker
  Cc: linux-pwm, Paul Bolle, Chih-Wei Huang, Samuel Ortiz,
	Alexandre Courbot, Jani Nikula, Shobhit Kumar, intel-gfx,
	Varka Bhadram, linux-kernel, dri-devel, linux-gpio, Brain WrecK,
	Povilas Staniulis, Thierry Reding, David Airlie, Daniel Vetter,
	Lee Jones, Linus Walleij

On Mon, Jun 29, 2015 at 3:48 AM, Paul Gortmaker
<paul.gortmaker@windriver.com> wrote:
> [Re: [Intel-gfx] [v3 0/7] Crystalcove (CRC) PMIC based panel and pwm control] On 26/06/2015 (Fri 20:47) Ville Syrjälä wrote:
>
>> On Fri, Jun 26, 2015 at 06:31:37PM +0200, Daniel Vetter wrote:
>> > On Fri, Jun 26, 2015 at 02:32:03PM +0530, Shobhit Kumar wrote:
>> > > Hi,
>> > > Next update of the series reviewed at
>> > > https://lkml.org/lkml/2015/6/22/155
>> > >
>> > > Major changes are few review comments from Varka and Ville being addressed. Also except
>> > > for intel-gfx patches, all patches reviesion history is moved out of commit message.
>> > >
>> > > Hope this series finally finds its mark.
>> > >
>> > > Regards
>> > > Shobhit
>> > >
>> > > Shobhit Kumar (7):
>> > >   gpiolib: Add support for removing registered consumer lookup table
>> > >   mfd: intel_soc_pmic_core: Add lookup table for Panel Control as GPIO
>> > >     signal
>> > >   mfd: intel_soc_pmic_crc: Add PWM cell device for Crystalcove PMIC
>> > >   mfd: intel_soc_pmic_core: ADD PWM lookup table for CRC PMIC based PWM
>> > >   pwm: crc: Add Crystalcove (CRC) PWM driver
>> > >   drm/i915: Use the CRC gpio for panel enable/disable
>> > >   drm/i915: Backlight control using CRC PMIC based PWM driver
>> >
>> > I think we have r-b/acks on all the patches now. Ok if I pull this in
>> > through drm-intel.git for 4.3? Or should I make a topic branch with tag
>> > and then send out pull requests to everyone? Or will each maintainer merge
>> > on their own since it's all only coupled at runtime anyway? Any of these
>> > would suit me.
>>
>> I forgot to mention that I had a build failure due to
>> builtin_platform_driver() when I tried this (just changed it to
>> module_platform_driver() to get past it). So I'm not sure if this
>> now depends on some tree which isn't included in -nightly...
>
> builtin_platform_register does not yet exist in mainline; as Paul (the
> other one) said earlier.  So you can either open-code what it does for
> now, or use  module_platform_register.  If you do the latter, then
> ensure you (temorarily) also include module.h or you risk additional
> breakage in the future.
>

Guess its in mainline now. Whats the plan for the merge of these patches ?

Regards
Shobhit

> Paul.
> --
>
>>
>> --
>> Ville Syrjälä
>> Intel OTC
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [Intel-gfx] [v3 0/7] Crystalcove (CRC) PMIC based panel and pwm control
@ 2015-07-10 13:06         ` Shobhit Kumar
  0 siblings, 0 replies; 32+ messages in thread
From: Shobhit Kumar @ 2015-07-10 13:06 UTC (permalink / raw)
  To: Paul Gortmaker
  Cc: Ville Syrjälä,
	linux-pwm, Paul Bolle, Samuel Ortiz, Alexandre Courbot,
	Jani Nikula, Shobhit Kumar, intel-gfx, Varka Bhadram,
	linux-kernel, dri-devel, linux-gpio, Brain WrecK,
	Povilas Staniulis, Thierry Reding, David Airlie, Daniel Vetter,
	Lee Jones, Linus Walleij, Chih-Wei Huang

On Mon, Jun 29, 2015 at 3:48 AM, Paul Gortmaker
<paul.gortmaker@windriver.com> wrote:
> [Re: [Intel-gfx] [v3 0/7] Crystalcove (CRC) PMIC based panel and pwm control] On 26/06/2015 (Fri 20:47) Ville Syrjälä wrote:
>
>> On Fri, Jun 26, 2015 at 06:31:37PM +0200, Daniel Vetter wrote:
>> > On Fri, Jun 26, 2015 at 02:32:03PM +0530, Shobhit Kumar wrote:
>> > > Hi,
>> > > Next update of the series reviewed at
>> > > https://lkml.org/lkml/2015/6/22/155
>> > >
>> > > Major changes are few review comments from Varka and Ville being addressed. Also except
>> > > for intel-gfx patches, all patches reviesion history is moved out of commit message.
>> > >
>> > > Hope this series finally finds its mark.
>> > >
>> > > Regards
>> > > Shobhit
>> > >
>> > > Shobhit Kumar (7):
>> > >   gpiolib: Add support for removing registered consumer lookup table
>> > >   mfd: intel_soc_pmic_core: Add lookup table for Panel Control as GPIO
>> > >     signal
>> > >   mfd: intel_soc_pmic_crc: Add PWM cell device for Crystalcove PMIC
>> > >   mfd: intel_soc_pmic_core: ADD PWM lookup table for CRC PMIC based PWM
>> > >   pwm: crc: Add Crystalcove (CRC) PWM driver
>> > >   drm/i915: Use the CRC gpio for panel enable/disable
>> > >   drm/i915: Backlight control using CRC PMIC based PWM driver
>> >
>> > I think we have r-b/acks on all the patches now. Ok if I pull this in
>> > through drm-intel.git for 4.3? Or should I make a topic branch with tag
>> > and then send out pull requests to everyone? Or will each maintainer merge
>> > on their own since it's all only coupled at runtime anyway? Any of these
>> > would suit me.
>>
>> I forgot to mention that I had a build failure due to
>> builtin_platform_driver() when I tried this (just changed it to
>> module_platform_driver() to get past it). So I'm not sure if this
>> now depends on some tree which isn't included in -nightly...
>
> builtin_platform_register does not yet exist in mainline; as Paul (the
> other one) said earlier.  So you can either open-code what it does for
> now, or use  module_platform_register.  If you do the latter, then
> ensure you (temorarily) also include module.h or you risk additional
> breakage in the future.
>

Guess its in mainline now. Whats the plan for the merge of these patches ?

Regards
Shobhit

> Paul.
> --
>
>>
>> --
>> Ville Syrjälä
>> Intel OTC
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [Intel-gfx] [v3 0/7] Crystalcove (CRC) PMIC based panel and pwm control
  2015-07-10 13:06         ` [Intel-gfx] " Shobhit Kumar
@ 2015-07-21  7:13           ` Shobhit Kumar
  -1 siblings, 0 replies; 32+ messages in thread
From: Shobhit Kumar @ 2015-07-21  7:13 UTC (permalink / raw)
  To: Paul Gortmaker, Daniel Vetter
  Cc: linux-pwm, Paul Bolle, Samuel Ortiz, Alexandre Courbot,
	Jani Nikula, Shobhit Kumar, intel-gfx, Varka Bhadram,
	linux-kernel, dri-devel, linux-gpio, Brain WrecK,
	Povilas Staniulis, Lee Jones

On Fri, Jul 10, 2015 at 6:36 PM, Shobhit Kumar <kumar@shobhit.info> wrote:
> On Mon, Jun 29, 2015 at 3:48 AM, Paul Gortmaker
> <paul.gortmaker@windriver.com> wrote:
>> [Re: [Intel-gfx] [v3 0/7] Crystalcove (CRC) PMIC based panel and pwm control] On 26/06/2015 (Fri 20:47) Ville Syrjälä wrote:
>>
>>> On Fri, Jun 26, 2015 at 06:31:37PM +0200, Daniel Vetter wrote:
>>> > On Fri, Jun 26, 2015 at 02:32:03PM +0530, Shobhit Kumar wrote:
>>> > > Hi,
>>> > > Next update of the series reviewed at
>>> > > https://lkml.org/lkml/2015/6/22/155
>>> > >
>>> > > Major changes are few review comments from Varka and Ville being addressed. Also except
>>> > > for intel-gfx patches, all patches reviesion history is moved out of commit message.
>>> > >
>>> > > Hope this series finally finds its mark.
>>> > >
>>> > > Regards
>>> > > Shobhit
>>> > >
>>> > > Shobhit Kumar (7):
>>> > >   gpiolib: Add support for removing registered consumer lookup table
>>> > >   mfd: intel_soc_pmic_core: Add lookup table for Panel Control as GPIO
>>> > >     signal
>>> > >   mfd: intel_soc_pmic_crc: Add PWM cell device for Crystalcove PMIC
>>> > >   mfd: intel_soc_pmic_core: ADD PWM lookup table for CRC PMIC based PWM
>>> > >   pwm: crc: Add Crystalcove (CRC) PWM driver
>>> > >   drm/i915: Use the CRC gpio for panel enable/disable
>>> > >   drm/i915: Backlight control using CRC PMIC based PWM driver
>>> >
>>> > I think we have r-b/acks on all the patches now. Ok if I pull this in
>>> > through drm-intel.git for 4.3? Or should I make a topic branch with tag
>>> > and then send out pull requests to everyone? Or will each maintainer merge
>>> > on their own since it's all only coupled at runtime anyway? Any of these
>>> > would suit me.
>>>
>>> I forgot to mention that I had a build failure due to
>>> builtin_platform_driver() when I tried this (just changed it to
>>> module_platform_driver() to get past it). So I'm not sure if this
>>> now depends on some tree which isn't included in -nightly...
>>
>> builtin_platform_register does not yet exist in mainline; as Paul (the
>> other one) said earlier.  So you can either open-code what it does for
>> now, or use  module_platform_register.  If you do the latter, then
>> ensure you (temorarily) also include module.h or you risk additional
>> breakage in the future.
>>
>
> Guess its in mainline now. Whats the plan for the merge of these patches ?
>

Do I need to do anything further on these patches ? Daniel can you
help in the next steps.

Regards
Shobhit
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [Intel-gfx] [v3 0/7] Crystalcove (CRC) PMIC based panel and pwm control
@ 2015-07-21  7:13           ` Shobhit Kumar
  0 siblings, 0 replies; 32+ messages in thread
From: Shobhit Kumar @ 2015-07-21  7:13 UTC (permalink / raw)
  To: Paul Gortmaker, Daniel Vetter
  Cc: Ville Syrjälä,
	linux-pwm, Paul Bolle, Samuel Ortiz, Alexandre Courbot,
	Jani Nikula, Shobhit Kumar, intel-gfx, Varka Bhadram,
	linux-kernel, dri-devel, linux-gpio, Brain WrecK,
	Povilas Staniulis, Thierry Reding, David Airlie, Lee Jones,
	Linus Walleij, Chih-Wei Huang

On Fri, Jul 10, 2015 at 6:36 PM, Shobhit Kumar <kumar@shobhit.info> wrote:
> On Mon, Jun 29, 2015 at 3:48 AM, Paul Gortmaker
> <paul.gortmaker@windriver.com> wrote:
>> [Re: [Intel-gfx] [v3 0/7] Crystalcove (CRC) PMIC based panel and pwm control] On 26/06/2015 (Fri 20:47) Ville Syrjälä wrote:
>>
>>> On Fri, Jun 26, 2015 at 06:31:37PM +0200, Daniel Vetter wrote:
>>> > On Fri, Jun 26, 2015 at 02:32:03PM +0530, Shobhit Kumar wrote:
>>> > > Hi,
>>> > > Next update of the series reviewed at
>>> > > https://lkml.org/lkml/2015/6/22/155
>>> > >
>>> > > Major changes are few review comments from Varka and Ville being addressed. Also except
>>> > > for intel-gfx patches, all patches reviesion history is moved out of commit message.
>>> > >
>>> > > Hope this series finally finds its mark.
>>> > >
>>> > > Regards
>>> > > Shobhit
>>> > >
>>> > > Shobhit Kumar (7):
>>> > >   gpiolib: Add support for removing registered consumer lookup table
>>> > >   mfd: intel_soc_pmic_core: Add lookup table for Panel Control as GPIO
>>> > >     signal
>>> > >   mfd: intel_soc_pmic_crc: Add PWM cell device for Crystalcove PMIC
>>> > >   mfd: intel_soc_pmic_core: ADD PWM lookup table for CRC PMIC based PWM
>>> > >   pwm: crc: Add Crystalcove (CRC) PWM driver
>>> > >   drm/i915: Use the CRC gpio for panel enable/disable
>>> > >   drm/i915: Backlight control using CRC PMIC based PWM driver
>>> >
>>> > I think we have r-b/acks on all the patches now. Ok if I pull this in
>>> > through drm-intel.git for 4.3? Or should I make a topic branch with tag
>>> > and then send out pull requests to everyone? Or will each maintainer merge
>>> > on their own since it's all only coupled at runtime anyway? Any of these
>>> > would suit me.
>>>
>>> I forgot to mention that I had a build failure due to
>>> builtin_platform_driver() when I tried this (just changed it to
>>> module_platform_driver() to get past it). So I'm not sure if this
>>> now depends on some tree which isn't included in -nightly...
>>
>> builtin_platform_register does not yet exist in mainline; as Paul (the
>> other one) said earlier.  So you can either open-code what it does for
>> now, or use  module_platform_register.  If you do the latter, then
>> ensure you (temorarily) also include module.h or you risk additional
>> breakage in the future.
>>
>
> Guess its in mainline now. Whats the plan for the merge of these patches ?
>

Do I need to do anything further on these patches ? Daniel can you
help in the next steps.

Regards
Shobhit

^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [Intel-gfx] [v3 0/7] Crystalcove (CRC) PMIC based panel and pwm control
  2015-07-21  7:13           ` Shobhit Kumar
@ 2015-07-21  7:24             ` Daniel Vetter
  -1 siblings, 0 replies; 32+ messages in thread
From: Daniel Vetter @ 2015-07-21  7:24 UTC (permalink / raw)
  To: Shobhit Kumar
  Cc: Paul Gortmaker, Daniel Vetter, linux-pwm, Paul Bolle,
	Samuel Ortiz, Alexandre Courbot, Jani Nikula, Shobhit Kumar,
	intel-gfx, Varka Bhadram, linux-kernel, dri-devel, linux-gpio,
	Brain WrecK, Povilas Staniulis, Lee Jones

On Tue, Jul 21, 2015 at 12:43:48PM +0530, Shobhit Kumar wrote:
> On Fri, Jul 10, 2015 at 6:36 PM, Shobhit Kumar <kumar@shobhit.info> wrote:
> > On Mon, Jun 29, 2015 at 3:48 AM, Paul Gortmaker
> > <paul.gortmaker@windriver.com> wrote:
> >> [Re: [Intel-gfx] [v3 0/7] Crystalcove (CRC) PMIC based panel and pwm control] On 26/06/2015 (Fri 20:47) Ville Syrjälä wrote:
> >>
> >>> On Fri, Jun 26, 2015 at 06:31:37PM +0200, Daniel Vetter wrote:
> >>> > On Fri, Jun 26, 2015 at 02:32:03PM +0530, Shobhit Kumar wrote:
> >>> > > Hi,
> >>> > > Next update of the series reviewed at
> >>> > > https://lkml.org/lkml/2015/6/22/155
> >>> > >
> >>> > > Major changes are few review comments from Varka and Ville being addressed. Also except
> >>> > > for intel-gfx patches, all patches reviesion history is moved out of commit message.
> >>> > >
> >>> > > Hope this series finally finds its mark.
> >>> > >
> >>> > > Regards
> >>> > > Shobhit
> >>> > >
> >>> > > Shobhit Kumar (7):
> >>> > >   gpiolib: Add support for removing registered consumer lookup table
> >>> > >   mfd: intel_soc_pmic_core: Add lookup table for Panel Control as GPIO
> >>> > >     signal
> >>> > >   mfd: intel_soc_pmic_crc: Add PWM cell device for Crystalcove PMIC
> >>> > >   mfd: intel_soc_pmic_core: ADD PWM lookup table for CRC PMIC based PWM
> >>> > >   pwm: crc: Add Crystalcove (CRC) PWM driver
> >>> > >   drm/i915: Use the CRC gpio for panel enable/disable
> >>> > >   drm/i915: Backlight control using CRC PMIC based PWM driver
> >>> >
> >>> > I think we have r-b/acks on all the patches now. Ok if I pull this in
> >>> > through drm-intel.git for 4.3? Or should I make a topic branch with tag
> >>> > and then send out pull requests to everyone? Or will each maintainer merge
> >>> > on their own since it's all only coupled at runtime anyway? Any of these
> >>> > would suit me.
> >>>
> >>> I forgot to mention that I had a build failure due to
> >>> builtin_platform_driver() when I tried this (just changed it to
> >>> module_platform_driver() to get past it). So I'm not sure if this
> >>> now depends on some tree which isn't included in -nightly...
> >>
> >> builtin_platform_register does not yet exist in mainline; as Paul (the
> >> other one) said earlier.  So you can either open-code what it does for
> >> now, or use  module_platform_register.  If you do the latter, then
> >> ensure you (temorarily) also include module.h or you risk additional
> >> breakage in the future.
> >>
> >
> > Guess its in mainline now. Whats the plan for the merge of these patches ?
> >
> 
> Do I need to do anything further on these patches ? Daniel can you
> help in the next steps.

I'm pulling them into a topic branch and then get it merged through
drm-intel.git. If other maintainers want to I can send them a pull request
for that topic branch too.
-Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
--
To unsubscribe from this list: send the line "unsubscribe linux-gpio" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 32+ messages in thread

* Re: [Intel-gfx] [v3 0/7] Crystalcove (CRC) PMIC based panel and pwm control
@ 2015-07-21  7:24             ` Daniel Vetter
  0 siblings, 0 replies; 32+ messages in thread
From: Daniel Vetter @ 2015-07-21  7:24 UTC (permalink / raw)
  To: Shobhit Kumar
  Cc: Paul Gortmaker, Daniel Vetter, linux-pwm, Paul Bolle,
	Samuel Ortiz, Alexandre Courbot, Jani Nikula, Shobhit Kumar,
	intel-gfx, Varka Bhadram, linux-kernel, dri-devel, linux-gpio,
	Brain WrecK, Povilas Staniulis, Lee Jones

On Tue, Jul 21, 2015 at 12:43:48PM +0530, Shobhit Kumar wrote:
> On Fri, Jul 10, 2015 at 6:36 PM, Shobhit Kumar <kumar@shobhit.info> wrote:
> > On Mon, Jun 29, 2015 at 3:48 AM, Paul Gortmaker
> > <paul.gortmaker@windriver.com> wrote:
> >> [Re: [Intel-gfx] [v3 0/7] Crystalcove (CRC) PMIC based panel and pwm control] On 26/06/2015 (Fri 20:47) Ville Syrjälä wrote:
> >>
> >>> On Fri, Jun 26, 2015 at 06:31:37PM +0200, Daniel Vetter wrote:
> >>> > On Fri, Jun 26, 2015 at 02:32:03PM +0530, Shobhit Kumar wrote:
> >>> > > Hi,
> >>> > > Next update of the series reviewed at
> >>> > > https://lkml.org/lkml/2015/6/22/155
> >>> > >
> >>> > > Major changes are few review comments from Varka and Ville being addressed. Also except
> >>> > > for intel-gfx patches, all patches reviesion history is moved out of commit message.
> >>> > >
> >>> > > Hope this series finally finds its mark.
> >>> > >
> >>> > > Regards
> >>> > > Shobhit
> >>> > >
> >>> > > Shobhit Kumar (7):
> >>> > >   gpiolib: Add support for removing registered consumer lookup table
> >>> > >   mfd: intel_soc_pmic_core: Add lookup table for Panel Control as GPIO
> >>> > >     signal
> >>> > >   mfd: intel_soc_pmic_crc: Add PWM cell device for Crystalcove PMIC
> >>> > >   mfd: intel_soc_pmic_core: ADD PWM lookup table for CRC PMIC based PWM
> >>> > >   pwm: crc: Add Crystalcove (CRC) PWM driver
> >>> > >   drm/i915: Use the CRC gpio for panel enable/disable
> >>> > >   drm/i915: Backlight control using CRC PMIC based PWM driver
> >>> >
> >>> > I think we have r-b/acks on all the patches now. Ok if I pull this in
> >>> > through drm-intel.git for 4.3? Or should I make a topic branch with tag
> >>> > and then send out pull requests to everyone? Or will each maintainer merge
> >>> > on their own since it's all only coupled at runtime anyway? Any of these
> >>> > would suit me.
> >>>
> >>> I forgot to mention that I had a build failure due to
> >>> builtin_platform_driver() when I tried this (just changed it to
> >>> module_platform_driver() to get past it). So I'm not sure if this
> >>> now depends on some tree which isn't included in -nightly...
> >>
> >> builtin_platform_register does not yet exist in mainline; as Paul (the
> >> other one) said earlier.  So you can either open-code what it does for
> >> now, or use  module_platform_register.  If you do the latter, then
> >> ensure you (temorarily) also include module.h or you risk additional
> >> breakage in the future.
> >>
> >
> > Guess its in mainline now. Whats the plan for the merge of these patches ?
> >
> 
> Do I need to do anything further on these patches ? Daniel can you
> help in the next steps.

I'm pulling them into a topic branch and then get it merged through
drm-intel.git. If other maintainers want to I can send them a pull request
for that topic branch too.
-Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch

^ permalink raw reply	[flat|nested] 32+ messages in thread

end of thread, other threads:[~2015-07-21  7:21 UTC | newest]

Thread overview: 32+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-06-26  9:02 [v3 0/7] Crystalcove (CRC) PMIC based panel and pwm control Shobhit Kumar
2015-06-26  9:02 ` Shobhit Kumar
2015-06-26  9:02 ` [v3 1/7] gpiolib: Add support for removing registered consumer lookup table Shobhit Kumar
2015-06-26  9:02   ` Shobhit Kumar
2015-07-01  7:46   ` Lee Jones
2015-06-26  9:02 ` [v3 2/7] mfd: intel_soc_pmic_core: Add lookup table for Panel Control as GPIO signal Shobhit Kumar
2015-06-26  9:02   ` Shobhit Kumar
2015-06-26  9:02 ` [v3 3/7] mfd: intel_soc_pmic_crc: Add PWM cell device for Crystalcove PMIC Shobhit Kumar
2015-06-26  9:02 ` [v3 4/7] mfd: intel_soc_pmic_core: ADD PWM lookup table for CRC PMIC based PWM Shobhit Kumar
2015-06-26  9:02   ` Shobhit Kumar
2015-06-26  9:02 ` [v3 5/7] pwm: crc: Add Crystalcove (CRC) PWM driver Shobhit Kumar
2015-06-26  9:02   ` Shobhit Kumar
2015-06-26 12:31   ` Varka Bhadram
2015-06-26 12:31     ` Varka Bhadram
2015-06-26  9:02 ` [v3 6/7] drm/i915: Use the CRC gpio for panel enable/disable Shobhit Kumar
2015-06-26  9:02   ` Shobhit Kumar
2015-06-26  9:02 ` [v3 7/7] drm/i915: Backlight control using CRC PMIC based PWM driver Shobhit Kumar
2015-06-26  9:02   ` Shobhit Kumar
2015-06-26 16:31 ` [Intel-gfx] [v3 0/7] Crystalcove (CRC) PMIC based panel and pwm control Daniel Vetter
2015-06-26 17:47   ` Ville Syrjälä
2015-06-26 17:47     ` [Intel-gfx] " Ville Syrjälä
2015-06-28  2:28     ` Shobhit Kumar
2015-06-28  2:28       ` [Intel-gfx] " Shobhit Kumar
2015-06-28 22:18     ` Paul Gortmaker
2015-06-28 22:18       ` Paul Gortmaker
2015-06-30  4:37       ` Brain WrecK
2015-07-10 13:06       ` Shobhit Kumar
2015-07-10 13:06         ` [Intel-gfx] " Shobhit Kumar
2015-07-21  7:13         ` Shobhit Kumar
2015-07-21  7:13           ` Shobhit Kumar
2015-07-21  7:24           ` Daniel Vetter
2015-07-21  7:24             ` Daniel Vetter

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.