[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20200108163933.GY32742@smile.fi.intel.com>
Date: Wed, 8 Jan 2020 18:39:33 +0200
From: Andy Shevchenko <andriy.shevchenko@...ux.intel.com>
To: Mika Westerberg <mika.westerberg@...ux.intel.com>
Cc: Darren Hart <dvhart@...radead.org>,
Lee Jones <lee.jones@...aro.org>,
Thomas Gleixner <tglx@...utronix.de>,
Ingo Molnar <mingo@...hat.com>, Borislav Petkov <bp@...en8.de>,
"H . Peter Anvin" <hpa@...or.com>, x86@...nel.org,
Zha Qipeng <qipeng.zha@...el.com>,
Rajneesh Bhardwaj <rajneesh.bhardwaj@...ux.intel.com>,
"David E . Box" <david.e.box@...ux.intel.com>,
Guenter Roeck <linux@...ck-us.net>,
Heikki Krogerus <heikki.krogerus@...ux.intel.com>,
Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
Wim Van Sebroeck <wim@...ux-watchdog.org>,
platform-driver-x86@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH v2 05/36] platform/x86: intel_scu_ipc: Drop
intel_scu_ipc_i2c_cntrl()
On Wed, Jan 08, 2020 at 02:41:30PM +0300, Mika Westerberg wrote:
> There are no existing users for this functionality so drop it from the
> driver completely.
Reviewed-by: Andy Shevchenko <andriy.shevchenko@...ux.intel.com>
>
> Signed-off-by: Mika Westerberg <mika.westerberg@...ux.intel.com>
> ---
> arch/x86/include/asm/intel_scu_ipc.h | 3 --
> drivers/platform/x86/intel_scu_ipc.c | 62 ----------------------------
> 2 files changed, 65 deletions(-)
>
> diff --git a/arch/x86/include/asm/intel_scu_ipc.h b/arch/x86/include/asm/intel_scu_ipc.h
> index 4a8c6e817398..d7bbebf4b729 100644
> --- a/arch/x86/include/asm/intel_scu_ipc.h
> +++ b/arch/x86/include/asm/intel_scu_ipc.h
> @@ -53,9 +53,6 @@ int intel_scu_ipc_command(int cmd, int sub, u32 *in, int inlen,
> int intel_scu_ipc_raw_command(int cmd, int sub, u8 *in, int inlen,
> u32 *out, int outlen, u32 dptr, u32 sptr);
>
> -/* I2C control api */
> -int intel_scu_ipc_i2c_cntrl(u32 addr, u32 *data);
> -
> /* Update FW version */
> int intel_scu_ipc_fw_update(u8 *buffer, u32 length);
>
> diff --git a/drivers/platform/x86/intel_scu_ipc.c b/drivers/platform/x86/intel_scu_ipc.c
> index 6c44fe5e55b5..b39680b53387 100644
> --- a/drivers/platform/x86/intel_scu_ipc.c
> +++ b/drivers/platform/x86/intel_scu_ipc.c
> @@ -64,28 +64,21 @@
>
> /* intel scu ipc driver data */
> struct intel_scu_ipc_pdata_t {
> - u32 i2c_base;
> - u32 i2c_len;
> u8 irq_mode;
> };
>
> /* Penwell and Cloverview */
> static const struct intel_scu_ipc_pdata_t intel_scu_ipc_penwell_pdata = {
> - .i2c_base = 0xff12b000,
> - .i2c_len = 0x10,
> .irq_mode = 1,
> };
>
> static const struct intel_scu_ipc_pdata_t intel_scu_ipc_tangier_pdata = {
> - .i2c_base = 0xff00d000,
> - .i2c_len = 0x10,
> .irq_mode = 0,
> };
>
> struct intel_scu_ipc_dev {
> struct device *dev;
> void __iomem *ipc_base;
> - void __iomem *i2c_base;
> struct completion cmd_complete;
> u8 irq_mode;
> };
> @@ -103,9 +96,6 @@ static struct intel_scu_ipc_dev ipcdev; /* Only one for now */
> #define IPC_WRITE_BUFFER 0x80
> #define IPC_READ_BUFFER 0x90
>
> -#define IPC_I2C_CNTRL_ADDR 0
> -#define I2C_DATA_ADDR 0x04
> -
> static DEFINE_MUTEX(ipclock); /* lock used to prevent multiple call to SCU */
>
> /*
> @@ -549,54 +539,6 @@ int intel_scu_ipc_raw_command(int cmd, int sub, u8 *in, int inlen,
> }
> EXPORT_SYMBOL_GPL(intel_scu_ipc_raw_command);
>
> -/* I2C commands */
> -#define IPC_I2C_WRITE 1 /* I2C Write command */
> -#define IPC_I2C_READ 2 /* I2C Read command */
> -
> -/**
> - * intel_scu_ipc_i2c_cntrl - I2C read/write operations
> - * @addr: I2C address + command bits
> - * @data: data to read/write
> - *
> - * Perform an an I2C read/write operation via the SCU. All locking is
> - * handled for the caller. This function may sleep.
> - *
> - * Returns an error code or 0 on success.
> - *
> - * This has to be in the IPC driver for the locking.
> - */
> -int intel_scu_ipc_i2c_cntrl(u32 addr, u32 *data)
> -{
> - struct intel_scu_ipc_dev *scu = &ipcdev;
> - u32 cmd = 0;
> -
> - mutex_lock(&ipclock);
> - if (scu->dev == NULL) {
> - mutex_unlock(&ipclock);
> - return -ENODEV;
> - }
> - cmd = (addr >> 24) & 0xFF;
> - if (cmd == IPC_I2C_READ) {
> - writel(addr, scu->i2c_base + IPC_I2C_CNTRL_ADDR);
> - /* Write not getting updated without delay */
> - usleep_range(1000, 2000);
> - *data = readl(scu->i2c_base + I2C_DATA_ADDR);
> - } else if (cmd == IPC_I2C_WRITE) {
> - writel(*data, scu->i2c_base + I2C_DATA_ADDR);
> - usleep_range(1000, 2000);
> - writel(addr, scu->i2c_base + IPC_I2C_CNTRL_ADDR);
> - } else {
> - dev_err(scu->dev,
> - "intel_scu_ipc: I2C INVALID_CMD = 0x%x\n", cmd);
> -
> - mutex_unlock(&ipclock);
> - return -EIO;
> - }
> - mutex_unlock(&ipclock);
> - return 0;
> -}
> -EXPORT_SYMBOL(intel_scu_ipc_i2c_cntrl);
> -
> /*
> * Interrupt handler gets called when ioc bit of IPC_COMMAND_REG set to 1
> * When ioc bit is set to 1, caller api must wait for interrupt handler called
> @@ -649,10 +591,6 @@ static int ipc_probe(struct pci_dev *pdev, const struct pci_device_id *id)
>
> scu->ipc_base = pcim_iomap_table(pdev)[0];
>
> - scu->i2c_base = ioremap_nocache(pdata->i2c_base, pdata->i2c_len);
> - if (!scu->i2c_base)
> - return -ENOMEM;
> -
> err = devm_request_irq(&pdev->dev, pdev->irq, ioc, 0, "intel_scu_ipc",
> scu);
> if (err)
> --
> 2.24.1
>
--
With Best Regards,
Andy Shevchenko
Powered by blists - more mailing lists