]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/gma500: Convert to use new SCU IPC API
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Fri, 23 Oct 2020 17:53:21 +0000 (20:53 +0300)
committerAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Mon, 25 Jan 2021 18:05:30 +0000 (20:05 +0200)
Convert the GMA500 driver to use the new SCU IPC API. This allows us
to get rid of the duplicate PMC IPC implementation which is now covered
in SCU IPC driver.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Acked-by: Patrik Jakobsson <patrik.r.jakobsson@gmail.com>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
drivers/gpu/drm/gma500/Kconfig
drivers/gpu/drm/gma500/mdfld_device.c
drivers/gpu/drm/gma500/mdfld_dsi_output.c
drivers/gpu/drm/gma500/mdfld_output.c
drivers/gpu/drm/gma500/oaktrail_device.c
drivers/gpu/drm/gma500/psb_drv.h
drivers/gpu/drm/gma500/tc35876x-dsi-lvds.c

index 0e23c93a1094cdc9e7ec0664edd8d87b040a4221..1ef2cda5b5c23baafcc81b224a21a8e15c7a7627 100644 (file)
@@ -30,6 +30,7 @@ config DRM_GMA3600
 config DRM_MEDFIELD
        bool "Intel Medfield support (Experimental)"
        depends on DRM_GMA500 && X86_INTEL_MID
+       select INTEL_SCU_IPC
        help
          Say yes to include support for the Intel Medfield platform.
 
index b83d59b21de5d8c0418a4465352847073836f25b..12193e591327440ff9b1a01204724f2df4d5531e 100644 (file)
@@ -8,8 +8,6 @@
 #include <linux/delay.h>
 #include <linux/gpio/machine.h>
 
-#include <asm/intel_scu_ipc.h>
-
 #include "mdfld_dsi_output.h"
 #include "mdfld_output.h"
 #include "mid_bios.h"
index 4aab76613bd9e7977a52eb2c38afbb7fd8f002bd..38ec49b71499a8e32f88224e7541a643360696d2 100644 (file)
@@ -30,8 +30,6 @@
 #include <linux/pm_runtime.h>
 #include <linux/gpio/consumer.h>
 
-#include <asm/intel_scu_ipc.h>
-
 #include "mdfld_dsi_dpi.h"
 #include "mdfld_dsi_output.h"
 #include "mdfld_dsi_pkg_sender.h"
index c95966bb0c96e9859fc0204f8875e71faa29c228..518417f49be808ab2e4fd66cd7420225b7392bce 100644 (file)
@@ -25,6 +25,8 @@
  * Scott Rowe <scott.m.rowe@intel.com>
 */
 
+#include <asm/intel_scu_ipc.h>
+
 #include "mdfld_output.h"
 #include "mdfld_dsi_dpi.h"
 #include "mdfld_dsi_output.h"
@@ -58,11 +60,14 @@ static void mdfld_init_panel(struct drm_device *dev, int mipi_pipe,
        }
 }
 
-
 int mdfld_output_init(struct drm_device *dev)
 {
        struct drm_psb_private *dev_priv = dev->dev_private;
 
+       dev_priv->scu = devm_intel_scu_ipc_dev_get(&dev->pdev->dev);
+       if (!dev_priv->scu)
+               return -EPROBE_DEFER;
+
        /* FIXME: hardcoded for now */
        dev_priv->mdfld_panel_id = TC35876X;
        /* MIPI panel 1 */
@@ -71,4 +76,3 @@ int mdfld_output_init(struct drm_device *dev)
        mdfld_init_panel(dev, 1, HDMI);
        return 0;
 }
-
index 8754290b0e2343ebf75895832e5cacd9df0d0309..0c1a66b20f276764f9b8f42e1fe070957f1352a0 100644 (file)
@@ -10,9 +10,6 @@
 #include <linux/dmi.h>
 #include <linux/module.h>
 
-#include <asm/intel-mid.h>
-#include <asm/intel_scu_ipc.h>
-
 #include <drm/drm.h>
 
 #include "intel_bios.h"
index 5b7f7a312d53ffe84b6fb86c0ab60b199c89e23a..938efdddc27c4c21273a3ea836d6948278c96fd4 100644 (file)
@@ -428,6 +428,8 @@ struct psb_ops;
 
 #define PSB_NUM_PIPE           3
 
+struct intel_scu_ipc_dev;
+
 struct drm_psb_private {
        struct drm_device *dev;
        struct pci_dev *aux_pdev; /* Currently only used by mrst */
@@ -567,6 +569,7 @@ struct drm_psb_private {
         * Used for modifying backlight from
         * xrandr -- consider removing and using HAL instead
         */
+       struct intel_scu_ipc_dev *scu;
        struct backlight_device *backlight_device;
        struct drm_property *backlight_property;
        bool backlight_enabled;
index e5bdd99ad453f4611e98411f03e9f226499044d8..7d012db6352b5ab0ef7e315b56f49e8115cab79b 100644 (file)
@@ -444,6 +444,7 @@ static inline u16 calc_clkdiv(unsigned long baseclk, unsigned int f)
 
 static void tc35876x_brightness_init(struct drm_device *dev)
 {
+       struct drm_psb_private *dev_priv = dev->dev_private;
        int ret;
        u8 pwmctrl;
        u16 clkdiv;
@@ -451,23 +452,23 @@ static void tc35876x_brightness_init(struct drm_device *dev)
        /* Make sure the PWM reference is the 19.2 MHz system clock. Read first
         * instead of setting directly to catch potential conflicts between PWM
         * users. */
-       ret = intel_scu_ipc_ioread8(GPIOPWMCTRL, &pwmctrl);
+       ret = intel_scu_ipc_dev_ioread8(dev_priv->scu, GPIOPWMCTRL, &pwmctrl);
        if (ret || pwmctrl != 0x01) {
                if (ret)
                        dev_err(&dev->pdev->dev, "GPIOPWMCTRL read failed\n");
                else
                        dev_warn(&dev->pdev->dev, "GPIOPWMCTRL was not set to system clock (pwmctrl = 0x%02x)\n", pwmctrl);
 
-               ret = intel_scu_ipc_iowrite8(GPIOPWMCTRL, 0x01);
+               ret = intel_scu_ipc_dev_iowrite8(dev_priv->scu, GPIOPWMCTRL, 0x01);
                if (ret)
                        dev_err(&dev->pdev->dev, "GPIOPWMCTRL set failed\n");
        }
 
        clkdiv = calc_clkdiv(SYSTEMCLK, PWM_FREQUENCY);
 
-       ret = intel_scu_ipc_iowrite8(PWM0CLKDIV1, (clkdiv >> 8) & 0xff);
+       ret = intel_scu_ipc_dev_iowrite8(dev_priv->scu, PWM0CLKDIV1, (clkdiv >> 8) & 0xff);
        if (!ret)
-               ret = intel_scu_ipc_iowrite8(PWM0CLKDIV0, clkdiv & 0xff);
+               ret = intel_scu_ipc_dev_iowrite8(dev_priv->scu, PWM0CLKDIV0, clkdiv & 0xff);
 
        if (ret)
                dev_err(&dev->pdev->dev, "PWM0CLKDIV set failed\n");
@@ -480,6 +481,7 @@ static void tc35876x_brightness_init(struct drm_device *dev)
 
 void tc35876x_brightness_control(struct drm_device *dev, int level)
 {
+       struct drm_psb_private *dev_priv = dev->dev_private;
        int ret;
        u8 duty_val;
        u8 panel_duty_val;
@@ -495,7 +497,7 @@ void tc35876x_brightness_control(struct drm_device *dev, int level)
        panel_duty_val = (2 * level - 100) * 0xA9 /
                         MDFLD_DSI_BRIGHTNESS_MAX_LEVEL + 0x56;
 
-       ret = intel_scu_ipc_iowrite8(PWM0DUTYCYCLE, duty_val);
+       ret = intel_scu_ipc_dev_iowrite8(dev_priv->scu, PWM0DUTYCYCLE, duty_val);
        if (ret)
                dev_err(&tc35876x_client->dev, "%s: ipc write fail\n",
                        __func__);