* [PATCH 0/3] LPSS PWM support for devices that support it
@ 2016-01-12 15:00 Shobhit Kumar
2016-01-12 15:00 ` [PATCH 1/3] drm/i915: Encapsulate the pwm_device in a pwm_info structure Shobhit Kumar
` (3 more replies)
0 siblings, 4 replies; 7+ messages in thread
From: Shobhit Kumar @ 2016-01-12 15:00 UTC (permalink / raw)
To: intel-gfx
Hi,
This is an untested attempt to enable LPSS PWM in the driver. As part
of this did some restructuring for encapsulating the pwm_info inside the
panel->backlight itself. This makes enabling LPSS PWM clean and simple.
Not sending yet to pwm mailing list as this is all untested. C.B. please
test the patches and see if they work at all for you. For testing Please
enable -
CONFIG_PWM_LPSS=y
CONFIG_PWM_LPSS_PLATFORM=y
Regards
Shobhit
Shobhit Kumar (3):
drm/i915: Encapsulate the pwm_device in a pwm_info structure
pwm: lpss: Add intel-gfx as consumer device in lookup table
drm/i915: Add support for LPSS PWM on devices that support it
drivers/gpu/drm/i915/intel_drv.h | 8 +++++-
drivers/gpu/drm/i915/intel_panel.c | 59 +++++++++++++++++++++++++++-----------
drivers/pwm/pwm-lpss-platform.c | 8 ++++++
3 files changed, 57 insertions(+), 18 deletions(-)
--
2.4.3
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 1/3] drm/i915: Encapsulate the pwm_device in a pwm_info structure
2016-01-12 15:00 [PATCH 0/3] LPSS PWM support for devices that support it Shobhit Kumar
@ 2016-01-12 15:00 ` Shobhit Kumar
2016-01-12 15:00 ` [PATCH 2/3] pwm: lpss: Add intel-gfx as consumer device in lookup table Shobhit Kumar
` (2 subsequent siblings)
3 siblings, 0 replies; 7+ messages in thread
From: Shobhit Kumar @ 2016-01-12 15:00 UTC (permalink / raw)
To: intel-gfx
pwm_info helps in encapsulating the PWM period_ns values and will form
basis of adding new pwm devices which can then be genrically used by
initializing proper pwm_info structure in the backlight setup call.
Cc: cbrookes@gmail.com
Cc: jani.nikula@linux.intel.com
Signed-off-by: Shobhit Kumar <shobhit.kumar@intel.com>
---
drivers/gpu/drm/i915/intel_drv.h | 8 ++++++-
drivers/gpu/drm/i915/intel_panel.c | 45 ++++++++++++++++++++++++--------------
2 files changed, 35 insertions(+), 18 deletions(-)
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
index bdfe403..6f96769 100644
--- a/drivers/gpu/drm/i915/intel_drv.h
+++ b/drivers/gpu/drm/i915/intel_drv.h
@@ -161,6 +161,12 @@ struct intel_encoder {
enum hpd_pin hpd_pin;
};
+struct intel_pwm_info {
+ struct pwm_device *dev;
+ unsigned int period_ns;
+ char *name;
+};
+
struct intel_panel {
struct drm_display_mode *fixed_mode;
struct drm_display_mode *downclock_mode;
@@ -179,7 +185,7 @@ struct intel_panel {
/* PWM chip */
bool util_pin_active_low; /* bxt+ */
u8 controller; /* bxt+ only */
- struct pwm_device *pwm;
+ struct intel_pwm_info *pwm;
struct backlight_device *device;
diff --git a/drivers/gpu/drm/i915/intel_panel.c b/drivers/gpu/drm/i915/intel_panel.c
index 21ee647..9e24c59 100644
--- a/drivers/gpu/drm/i915/intel_panel.c
+++ b/drivers/gpu/drm/i915/intel_panel.c
@@ -37,6 +37,13 @@
#define CRC_PMIC_PWM_PERIOD_NS 21333
+/* CRC PMIC based PWM Information */
+struct intel_pwm_info crc_pwm_info = {
+ .period_ns = CRC_PMIC_PWM_PERIOD_NS,
+ .name = "pwm_backlight",
+ .dev = NULL,
+};
+
void
intel_fixed_panel_mode(const struct drm_display_mode *fixed_mode,
struct drm_display_mode *adjusted_mode)
@@ -538,10 +545,11 @@ static u32 bxt_get_backlight(struct intel_connector *connector)
static u32 pwm_get_backlight(struct intel_connector *connector)
{
struct intel_panel *panel = &connector->panel;
+ struct intel_pwm_info *pwm = panel->backlight.pwm;
int duty_ns;
- duty_ns = pwm_get_duty_cycle(panel->backlight.pwm);
- return DIV_ROUND_UP(duty_ns * 100, CRC_PMIC_PWM_PERIOD_NS);
+ duty_ns = pwm_get_duty_cycle(pwm->dev);
+ return DIV_ROUND_UP(duty_ns * 100, pwm->period_ns);
}
static u32 intel_panel_get_backlight(struct intel_connector *connector)
@@ -630,9 +638,10 @@ static void bxt_set_backlight(struct intel_connector *connector, u32 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);
+ struct intel_pwm_info *pwm = panel->backlight.pwm;
+ int duty_ns = DIV_ROUND_UP(level * pwm->period_ns, 100);
- pwm_config(panel->backlight.pwm, duty_ns, CRC_PMIC_PWM_PERIOD_NS);
+ pwm_config(pwm->dev, duty_ns, pwm->period_ns);
}
static void
@@ -801,11 +810,12 @@ static void bxt_disable_backlight(struct intel_connector *connector)
static void pwm_disable_backlight(struct intel_connector *connector)
{
struct intel_panel *panel = &connector->panel;
+ struct intel_pwm_info *pwm = panel->backlight.pwm;
/* Disable the backlight */
- pwm_config(panel->backlight.pwm, 0, CRC_PMIC_PWM_PERIOD_NS);
+ pwm_config(pwm->dev, 0, pwm->period_ns);
usleep_range(2000, 3000);
- pwm_disable(panel->backlight.pwm);
+ pwm_disable(pwm->dev);
}
void intel_panel_disable_backlight(struct intel_connector *connector)
@@ -1069,7 +1079,7 @@ static void pwm_enable_backlight(struct intel_connector *connector)
{
struct intel_panel *panel = &connector->panel;
- pwm_enable(panel->backlight.pwm);
+ pwm_enable(panel->backlight.pwm->dev);
intel_panel_actually_set_backlight(connector, panel->backlight.level);
}
@@ -1630,21 +1640,21 @@ static int pwm_setup_backlight(struct intel_connector *connector,
{
struct drm_device *dev = connector->base.dev;
struct intel_panel *panel = &connector->panel;
+ struct intel_pwm_info *pwm = &crc_pwm_info;
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");
+ pwm->dev = pwm_get(dev->dev, pwm->name);
+ if (IS_ERR(pwm->dev)) {
+ DRM_ERROR("Failed to own the pwm chip: %s\n", pwm->name);
panel->backlight.pwm = NULL;
return -ENODEV;
}
- retval = pwm_config(panel->backlight.pwm, CRC_PMIC_PWM_PERIOD_NS,
- CRC_PMIC_PWM_PERIOD_NS);
+ retval = pwm_config(pwm->dev, pwm->period_ns, pwm->period_ns);
if (retval < 0) {
- DRM_ERROR("Failed to configure the pwm chip\n");
- pwm_put(panel->backlight.pwm);
+ DRM_ERROR("Failed to configure the pwm chip: %s\n", pwm->name);
+ pwm_put(pwm->dev);
panel->backlight.pwm = NULL;
return retval;
}
@@ -1652,10 +1662,11 @@ static int pwm_setup_backlight(struct intel_connector *connector,
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);
+ pwm_get_duty_cycle(pwm->dev) * 100, pwm->period_ns);
panel->backlight.enabled = panel->backlight.level != 0;
+ panel->backlight.pwm = pwm;
+
return 0;
}
@@ -1707,7 +1718,7 @@ void intel_panel_destroy_backlight(struct drm_connector *connector)
/* dispose of the pwm */
if (panel->backlight.pwm)
- pwm_put(panel->backlight.pwm);
+ pwm_put(panel->backlight.pwm->dev);
panel->backlight.present = false;
}
--
2.4.3
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 2/3] pwm: lpss: Add intel-gfx as consumer device in lookup table
2016-01-12 15:00 [PATCH 0/3] LPSS PWM support for devices that support it Shobhit Kumar
2016-01-12 15:00 ` [PATCH 1/3] drm/i915: Encapsulate the pwm_device in a pwm_info structure Shobhit Kumar
@ 2016-01-12 15:00 ` Shobhit Kumar
2016-01-12 17:24 ` kbuild test robot
2016-01-12 15:00 ` [PATCH 3/3] drm/i915: Add support for LPSS PWM on devices that support it Shobhit Kumar
2016-01-12 15:20 ` ✓ success: Fi.CI.BAT Patchwork
3 siblings, 1 reply; 7+ messages in thread
From: Shobhit Kumar @ 2016-01-12 15:00 UTC (permalink / raw)
To: intel-gfx
Cc: cbrookes@gmail.com
Cc: jani.nikula@linux.intel.com
Signed-off-by: Shobhit Kumar <shobhit.kumar@intel.com>
---
drivers/pwm/pwm-lpss-platform.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/drivers/pwm/pwm-lpss-platform.c b/drivers/pwm/pwm-lpss-platform.c
index 54433fc..910bc14 100644
--- a/drivers/pwm/pwm-lpss-platform.c
+++ b/drivers/pwm/pwm-lpss-platform.c
@@ -18,6 +18,11 @@
#include "pwm-lpss.h"
+/* PWM consumed by the Intel GFX */
+static struct pwm_lookup lpss_pwm_lookup[] = {
+ PWM_LOOKUP("pwm-lpss", 0, "0000:00:02.0", "pwm_lpss", 0, PWM_POLARITY_NORMAL),
+};
+
static int pwm_lpss_probe_platform(struct platform_device *pdev)
{
const struct pwm_lpss_boardinfo *info;
@@ -38,6 +43,9 @@ static int pwm_lpss_probe_platform(struct platform_device *pdev)
platform_set_drvdata(pdev, lpwm);
+ /* Register intel-gfx device as allowed consumer */
+ pwm_add_table(lpss_pwm_lookup, ARRAY_SIZE(lpss_pwm_lookup));
+
pm_runtime_set_active(&pdev->dev);
pm_runtime_enable(&pdev->dev);
--
2.4.3
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 3/3] drm/i915: Add support for LPSS PWM on devices that support it
2016-01-12 15:00 [PATCH 0/3] LPSS PWM support for devices that support it Shobhit Kumar
2016-01-12 15:00 ` [PATCH 1/3] drm/i915: Encapsulate the pwm_device in a pwm_info structure Shobhit Kumar
2016-01-12 15:00 ` [PATCH 2/3] pwm: lpss: Add intel-gfx as consumer device in lookup table Shobhit Kumar
@ 2016-01-12 15:00 ` Shobhit Kumar
2016-01-12 15:20 ` ✓ success: Fi.CI.BAT Patchwork
3 siblings, 0 replies; 7+ messages in thread
From: Shobhit Kumar @ 2016-01-12 15:00 UTC (permalink / raw)
To: intel-gfx
Cc: cbrookes@gmail.com
Cc: jani.nikula@linux.intel.com
Signed-off-by: Shobhit Kumar <shobhit.kumar@intel.com>
---
drivers/gpu/drm/i915/intel_panel.c | 16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/i915/intel_panel.c b/drivers/gpu/drm/i915/intel_panel.c
index 9e24c59..16473fa 100644
--- a/drivers/gpu/drm/i915/intel_panel.c
+++ b/drivers/gpu/drm/i915/intel_panel.c
@@ -36,6 +36,7 @@
#include "intel_drv.h"
#define CRC_PMIC_PWM_PERIOD_NS 21333
+#define LPSS_PWM_PERIOD_NS 10240
/* CRC PMIC based PWM Information */
struct intel_pwm_info crc_pwm_info = {
@@ -44,6 +45,13 @@ struct intel_pwm_info crc_pwm_info = {
.dev = NULL,
};
+/* LPSS based PWM Information */
+struct intel_pwm_info lpss_pwm_info = {
+ .period_ns = LPSS_PWM_PERIOD_NS,
+ .name = "pwm_lpss",
+ .dev = NULL,
+};
+
void
intel_fixed_panel_mode(const struct drm_display_mode *fixed_mode,
struct drm_display_mode *adjusted_mode)
@@ -1639,10 +1647,16 @@ static int pwm_setup_backlight(struct intel_connector *connector,
enum pipe pipe)
{
struct drm_device *dev = connector->base.dev;
+ struct drm_i915_private *dev_priv = to_i915(connector->base.dev);
struct intel_panel *panel = &connector->panel;
- struct intel_pwm_info *pwm = &crc_pwm_info;
+ struct intel_pwm_info *pwm;
int retval;
+ if (dev_priv->vbt.dsi.config->pwm_blc == PPS_BLC_PMIC)
+ pwm = &crc_pwm_info;
+ else /* PPS_BLC_SOC */
+ pwm = &lpss_pwm_info;
+
/* Get the PWM chip for backlight control */
pwm->dev = pwm_get(dev->dev, pwm->name);
if (IS_ERR(pwm->dev)) {
--
2.4.3
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 7+ messages in thread
* ✓ success: Fi.CI.BAT
2016-01-12 15:00 [PATCH 0/3] LPSS PWM support for devices that support it Shobhit Kumar
` (2 preceding siblings ...)
2016-01-12 15:00 ` [PATCH 3/3] drm/i915: Add support for LPSS PWM on devices that support it Shobhit Kumar
@ 2016-01-12 15:20 ` Patchwork
3 siblings, 0 replies; 7+ messages in thread
From: Patchwork @ 2016-01-12 15:20 UTC (permalink / raw)
To: Shobhit Kumar; +Cc: intel-gfx
== Summary ==
Built on 37f6c2ae666fbba9eff4355115252b8b0fd43050 drm-intel-nightly: 2016y-01m-12d-14h-25m-44s UTC integration manifest
Test gem_storedw_loop:
Subgroup basic-render:
dmesg-warn -> PASS (bdw-nuci7)
Test kms_pipe_crc_basic:
Subgroup read-crc-pipe-a-frame-sequence:
dmesg-warn -> PASS (byt-nuc)
Subgroup read-crc-pipe-c:
dmesg-warn -> PASS (bdw-ultra)
bdw-nuci7 total:138 pass:129 dwarn:0 dfail:0 fail:0 skip:9
bdw-ultra total:138 pass:132 dwarn:0 dfail:0 fail:0 skip:6
bsw-nuc-2 total:141 pass:115 dwarn:2 dfail:0 fail:0 skip:24
byt-nuc total:141 pass:123 dwarn:3 dfail:0 fail:0 skip:15
hsw-brixbox total:141 pass:134 dwarn:0 dfail:0 fail:0 skip:7
hsw-gt2 total:141 pass:137 dwarn:0 dfail:0 fail:0 skip:4
ilk-hp8440p total:141 pass:101 dwarn:3 dfail:0 fail:0 skip:37
ivb-t430s total:135 pass:122 dwarn:3 dfail:4 fail:0 skip:6
skl-i5k-2 total:141 pass:108 dwarn:25 dfail:0 fail:0 skip:8
skl-i7k-2 total:141 pass:107 dwarn:26 dfail:0 fail:0 skip:8
snb-dellxps total:141 pass:122 dwarn:5 dfail:0 fail:0 skip:14
snb-x220t total:141 pass:122 dwarn:5 dfail:0 fail:1 skip:13
Results at /archive/results/CI_IGT_test/Patchwork_1150/
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 2/3] pwm: lpss: Add intel-gfx as consumer device in lookup table
2016-01-12 15:00 ` [PATCH 2/3] pwm: lpss: Add intel-gfx as consumer device in lookup table Shobhit Kumar
@ 2016-01-12 17:24 ` kbuild test robot
0 siblings, 0 replies; 7+ messages in thread
From: kbuild test robot @ 2016-01-12 17:24 UTC (permalink / raw)
To: Shobhit Kumar; +Cc: intel-gfx, kbuild-all
[-- Attachment #1: Type: text/plain, Size: 826 bytes --]
Hi Shobhit,
[auto build test ERROR on drm-intel/for-linux-next]
[also build test ERROR on v4.4 next-20160112]
[if your patch is applied to the wrong git tree, please drop us a note to help improving the system]
url: https://github.com/0day-ci/linux/commits/Shobhit-Kumar/LPSS-PWM-support-for-devices-that-support-it/20160112-230336
base: git://anongit.freedesktop.org/drm-intel for-linux-next
config: x86_64-randconfig-s3-01122324 (attached as .config)
reproduce:
# save the attached .config to linux build tree
make ARCH=x86_64
All errors (new ones prefixed by >>):
>> ERROR: "pwm_add_table" [drivers/pwm/pwm-lpss-platform.ko] undefined!
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
[-- Attachment #2: .config.gz --]
[-- Type: application/octet-stream, Size: 24924 bytes --]
[-- Attachment #3: 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] 7+ messages in thread
* [PATCH 1/3] drm/i915: Encapsulate the pwm_device in a pwm_info structure
2017-05-31 9:27 [PATCH 0/3] Reviving the PWM_LPSS patches yet again Shobhit Kumar
@ 2017-05-31 9:27 ` Shobhit Kumar
0 siblings, 0 replies; 7+ messages in thread
From: Shobhit Kumar @ 2017-05-31 9:27 UTC (permalink / raw)
To: intel-gfx; +Cc: daniel.vetter, viric, jari.tahvanainen
pwm_info helps in encapsulating the PWM period_ns values and will form
basis of adding new pwm devices which can then be genrically used by
initializing proper pwm_info structure in the backlight setup call.
v2: Rebase on latest code. Add BZ details
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=96571
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=90075
Cc: cbrookes@gmail.com
Cc: jani.nikula@linux.intel.com
Tested-by: Lluís Batlle i Rossell <viric@viric.name>
Signed-off-by: Shobhit Kumar <shobhit.kumar@intel.com>
---
drivers/gpu/drm/i915/intel_drv.h | 8 ++++++-
drivers/gpu/drm/i915/intel_panel.c | 47 +++++++++++++++++++++++---------------
2 files changed, 36 insertions(+), 19 deletions(-)
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
index cc13706..17af59c 100644
--- a/drivers/gpu/drm/i915/intel_drv.h
+++ b/drivers/gpu/drm/i915/intel_drv.h
@@ -263,6 +263,12 @@ struct intel_encoder {
const struct drm_connector *audio_connector;
};
+struct intel_pwm_info {
+ struct pwm_device *dev;
+ unsigned int period_ns;
+ char *name;
+};
+
struct intel_panel {
struct drm_display_mode *fixed_mode;
struct drm_display_mode *downclock_mode;
@@ -282,7 +288,7 @@ struct intel_panel {
/* PWM chip */
bool util_pin_active_low; /* bxt+ */
u8 controller; /* bxt+ only */
- struct pwm_device *pwm;
+ struct intel_pwm_info *pwm;
struct backlight_device *device;
diff --git a/drivers/gpu/drm/i915/intel_panel.c b/drivers/gpu/drm/i915/intel_panel.c
index c8103f8..d56d1c2 100644
--- a/drivers/gpu/drm/i915/intel_panel.c
+++ b/drivers/gpu/drm/i915/intel_panel.c
@@ -37,6 +37,13 @@
#define CRC_PMIC_PWM_PERIOD_NS 21333
+/* CRC PMIC based PWM Information */
+struct intel_pwm_info crc_pwm_info = {
+ .period_ns = CRC_PMIC_PWM_PERIOD_NS,
+ .name = "pwm_backlight",
+ .dev = NULL,
+};
+
void
intel_fixed_panel_mode(const struct drm_display_mode *fixed_mode,
struct drm_display_mode *adjusted_mode)
@@ -536,10 +543,11 @@ static u32 bxt_get_backlight(struct intel_connector *connector)
static u32 pwm_get_backlight(struct intel_connector *connector)
{
struct intel_panel *panel = &connector->panel;
+ struct intel_pwm_info *pwm = panel->backlight.pwm;
int duty_ns;
- duty_ns = pwm_get_duty_cycle(panel->backlight.pwm);
- return DIV_ROUND_UP(duty_ns * 100, CRC_PMIC_PWM_PERIOD_NS);
+ duty_ns = pwm_get_duty_cycle(pwm->dev);
+ return DIV_ROUND_UP(duty_ns * 100, pwm->period_ns);
}
static u32 intel_panel_get_backlight(struct intel_connector *connector)
@@ -628,9 +636,10 @@ static void bxt_set_backlight(struct intel_connector *connector, u32 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);
+ struct intel_pwm_info *pwm = panel->backlight.pwm;
+ int duty_ns = DIV_ROUND_UP(level * pwm->period_ns, 100);
- pwm_config(panel->backlight.pwm, duty_ns, CRC_PMIC_PWM_PERIOD_NS);
+ pwm_config(pwm->dev, duty_ns, pwm->period_ns);
}
static void
@@ -799,11 +808,12 @@ static void bxt_disable_backlight(struct intel_connector *connector)
static void pwm_disable_backlight(struct intel_connector *connector)
{
struct intel_panel *panel = &connector->panel;
+ struct intel_pwm_info *pwm = panel->backlight.pwm;
/* Disable the backlight */
- pwm_config(panel->backlight.pwm, 0, CRC_PMIC_PWM_PERIOD_NS);
+ pwm_config(pwm->dev, 0, pwm->period_ns);
usleep_range(2000, 3000);
- pwm_disable(panel->backlight.pwm);
+ pwm_disable(pwm->dev);
}
void intel_panel_disable_backlight(struct intel_connector *connector)
@@ -1090,7 +1100,7 @@ static void pwm_enable_backlight(struct intel_connector *connector)
{
struct intel_panel *panel = &connector->panel;
- pwm_enable(panel->backlight.pwm);
+ pwm_enable(panel->backlight.pwm->dev);
intel_panel_actually_set_backlight(connector, panel->backlight.level);
}
@@ -1649,12 +1659,13 @@ static int pwm_setup_backlight(struct intel_connector *connector,
{
struct drm_device *dev = connector->base.dev;
struct intel_panel *panel = &connector->panel;
+ struct intel_pwm_info *pwm = &crc_pwm_info;
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");
+ pwm->dev = pwm_get(dev->dev, pwm->name);
+ if (IS_ERR(pwm->dev)) {
+ DRM_ERROR("Failed to own the pwm chip: %s\n", pwm->name);
panel->backlight.pwm = NULL;
return -ENODEV;
}
@@ -1663,13 +1674,12 @@ static int pwm_setup_backlight(struct intel_connector *connector,
* FIXME: pwm_apply_args() should be removed when switching to
* the atomic PWM API.
*/
- pwm_apply_args(panel->backlight.pwm);
+ pwm_apply_args(pwm->dev);
- retval = pwm_config(panel->backlight.pwm, CRC_PMIC_PWM_PERIOD_NS,
- CRC_PMIC_PWM_PERIOD_NS);
+ retval = pwm_config(pwm->dev, pwm->period_ns, pwm->period_ns);
if (retval < 0) {
- DRM_ERROR("Failed to configure the pwm chip\n");
- pwm_put(panel->backlight.pwm);
+ DRM_ERROR("Failed to configure the pwm chip: %s\n", pwm->name);
+ pwm_put(pwm->dev);
panel->backlight.pwm = NULL;
return retval;
}
@@ -1677,10 +1687,11 @@ static int pwm_setup_backlight(struct intel_connector *connector,
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);
+ pwm_get_duty_cycle(pwm->dev) * 100, pwm->period_ns);
panel->backlight.enabled = panel->backlight.level != 0;
+ panel->backlight.pwm = pwm;
+
return 0;
}
@@ -1732,7 +1743,7 @@ void intel_panel_destroy_backlight(struct drm_connector *connector)
/* dispose of the pwm */
if (panel->backlight.pwm)
- pwm_put(panel->backlight.pwm);
+ pwm_put(panel->backlight.pwm->dev);
panel->backlight.present = false;
}
--
2.7.4
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 7+ messages in thread
end of thread, other threads:[~2017-05-31 9:28 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-01-12 15:00 [PATCH 0/3] LPSS PWM support for devices that support it Shobhit Kumar
2016-01-12 15:00 ` [PATCH 1/3] drm/i915: Encapsulate the pwm_device in a pwm_info structure Shobhit Kumar
2016-01-12 15:00 ` [PATCH 2/3] pwm: lpss: Add intel-gfx as consumer device in lookup table Shobhit Kumar
2016-01-12 17:24 ` kbuild test robot
2016-01-12 15:00 ` [PATCH 3/3] drm/i915: Add support for LPSS PWM on devices that support it Shobhit Kumar
2016-01-12 15:20 ` ✓ success: Fi.CI.BAT Patchwork
2017-05-31 9:27 [PATCH 0/3] Reviving the PWM_LPSS patches yet again Shobhit Kumar
2017-05-31 9:27 ` [PATCH 1/3] drm/i915: Encapsulate the pwm_device in a pwm_info structure Shobhit Kumar
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.