Skip to content

Commit

Permalink
ipc: simplify platform data approach
Browse files Browse the repository at this point in the history
This patch removes the unnecessary enum for platform type to handle the
array of pdatas. We can set pdata directly to pci_device_id struct
instead.

Signed-off-by: David Cohen <david.a.cohen@linux.intel.com>
Signed-off-by: Matthew Garrett <matthew.garrett@nebula.com>
  • Loading branch information
David Cohen authored and Matthew Garrett committed Jan 21, 2014
1 parent 50a639f commit 694e523
Showing 1 changed file with 40 additions and 44 deletions.
84 changes: 40 additions & 44 deletions drivers/platform/x86/intel_scu_ipc.c
Original file line number Diff line number Diff line change
Expand Up @@ -62,13 +62,6 @@
#define IPC_RWBUF_SIZE 20 /* IPC Read buffer Size */
#define IPC_IOC 0x100 /* IPC command register IOC bit */

enum {
SCU_IPC_LINCROFT,
SCU_IPC_PENWELL,
SCU_IPC_CLOVERVIEW,
SCU_IPC_TANGIER,
};

/* intel scu ipc driver data*/
struct intel_scu_ipc_pdata_t {
u32 ipc_base;
Expand All @@ -78,35 +71,29 @@ struct intel_scu_ipc_pdata_t {
u8 irq_mode;
};

static struct intel_scu_ipc_pdata_t intel_scu_ipc_pdata[] = {
[SCU_IPC_LINCROFT] = {
.ipc_base = 0xff11c000,
.i2c_base = 0xff12b000,
.ipc_len = 0x100,
.i2c_len = 0x10,
.irq_mode = 0,
},
[SCU_IPC_PENWELL] = {
.ipc_base = 0xff11c000,
.i2c_base = 0xff12b000,
.ipc_len = 0x100,
.i2c_len = 0x10,
.irq_mode = 1,
},
[SCU_IPC_CLOVERVIEW] = {
.ipc_base = 0xff11c000,
.i2c_base = 0xff12b000,
.ipc_len = 0x100,
.i2c_len = 0x10,
.irq_mode = 1,
},
[SCU_IPC_TANGIER] = {
.ipc_base = 0xff009000,
.i2c_base = 0xff00d000,
.ipc_len = 0x100,
.i2c_len = 0x10,
.irq_mode = 0,
},
static struct intel_scu_ipc_pdata_t intel_scu_ipc_lincroft_pdata = {
.ipc_base = 0xff11c000,
.i2c_base = 0xff12b000,
.ipc_len = 0x100,
.i2c_len = 0x10,
.irq_mode = 0,
};

/* Penwell and Cloverview */
static struct intel_scu_ipc_pdata_t intel_scu_ipc_penwell_pdata = {
.ipc_base = 0xff11c000,
.i2c_base = 0xff12b000,
.ipc_len = 0x100,
.i2c_len = 0x10,
.irq_mode = 1,
};

static struct intel_scu_ipc_pdata_t intel_scu_ipc_tangier_pdata = {
.ipc_base = 0xff009000,
.i2c_base = 0xff00d000,
.ipc_len = 0x100,
.i2c_len = 0x10,
.irq_mode = 0,
};

static int ipc_probe(struct pci_dev *dev, const struct pci_device_id *id);
Expand Down Expand Up @@ -583,15 +570,14 @@ static irqreturn_t ioc(int irq, void *dev_id)
*/
static int ipc_probe(struct pci_dev *dev, const struct pci_device_id *id)
{
int err, pid;
int err;
struct intel_scu_ipc_pdata_t *pdata;
resource_size_t pci_resource;

if (ipcdev.pdev) /* We support only one SCU */
return -EBUSY;

pid = id->driver_data;
pdata = &intel_scu_ipc_pdata[pid];
pdata = (struct intel_scu_ipc_pdata_t *)id->driver_data;

ipcdev.pdev = pci_dev_get(dev);
ipcdev.irq_mode = pdata->irq_mode;
Expand Down Expand Up @@ -650,11 +636,21 @@ static void ipc_remove(struct pci_dev *pdev)
}

static DEFINE_PCI_DEVICE_TABLE(pci_ids) = {
{PCI_VDEVICE(INTEL, 0x082a), SCU_IPC_LINCROFT},
{PCI_VDEVICE(INTEL, 0x080e), SCU_IPC_PENWELL},
{PCI_VDEVICE(INTEL, 0x08ea), SCU_IPC_CLOVERVIEW},
{PCI_VDEVICE(INTEL, 0x11a0), SCU_IPC_TANGIER},
{ 0,}
{
PCI_VDEVICE(INTEL, 0x082a),
(kernel_ulong_t)&intel_scu_ipc_lincroft_pdata,
}, {
PCI_VDEVICE(INTEL, 0x080e),
(kernel_ulong_t)&intel_scu_ipc_penwell_pdata,
}, {
PCI_VDEVICE(INTEL, 0x08ea),
(kernel_ulong_t)&intel_scu_ipc_penwell_pdata,
}, {
PCI_VDEVICE(INTEL, 0x11a0),
(kernel_ulong_t)&intel_scu_ipc_tangier_pdata,
}, {
0,
}
};
MODULE_DEVICE_TABLE(pci, pci_ids);

Expand Down

0 comments on commit 694e523

Please sign in to comment.