58
58
#define IPC_RWBUF_SIZE 20 /* IPC Read buffer Size */
59
59
#define IPC_IOC 0x100 /* IPC command register IOC bit */
60
60
61
- #define PCI_DEVICE_ID_PENWELL 0x080e
62
- #define PCI_DEVICE_ID_CLOVERVIEW 0x08ea
63
- #define PCI_DEVICE_ID_TANGIER 0x11a0
64
-
65
- /* intel scu ipc driver data */
66
- struct intel_scu_ipc_pdata_t {
67
- u32 i2c_base ;
68
- u32 i2c_len ;
69
- };
70
-
71
- /* Penwell and Cloverview */
72
- static const struct intel_scu_ipc_pdata_t intel_scu_ipc_penwell_pdata = {
73
- .i2c_base = 0xff12b000 ,
74
- .i2c_len = 0x10 ,
75
- };
76
-
77
- static const struct intel_scu_ipc_pdata_t intel_scu_ipc_tangier_pdata = {
78
- .i2c_base = 0xff00d000 ,
79
- .i2c_len = 0x10 ,
80
- };
81
-
82
61
struct intel_scu_ipc_dev {
83
62
struct device * dev ;
84
63
void __iomem * ipc_base ;
85
- void __iomem * i2c_base ;
86
64
struct completion cmd_complete ;
87
65
u8 irq_mode ;
88
66
};
@@ -101,9 +79,6 @@ static struct intel_scu_ipc_dev ipcdev; /* Only one for now */
101
79
#define IPC_WRITE_BUFFER 0x80
102
80
#define IPC_READ_BUFFER 0x90
103
81
104
- #define IPC_I2C_CNTRL_ADDR 0
105
- #define I2C_DATA_ADDR 0x04
106
-
107
82
static DEFINE_MUTEX (ipclock ); /* lock used to prevent multiple call to SCU */
108
83
109
84
/*
@@ -544,54 +519,6 @@ int intel_scu_ipc_raw_command(int cmd, int sub, u8 *in, int inlen,
544
519
}
545
520
EXPORT_SYMBOL_GPL (intel_scu_ipc_raw_command );
546
521
547
- /* I2C commands */
548
- #define IPC_I2C_WRITE 1 /* I2C Write command */
549
- #define IPC_I2C_READ 2 /* I2C Read command */
550
-
551
- /**
552
- * intel_scu_ipc_i2c_cntrl - I2C read/write operations
553
- * @addr: I2C address + command bits
554
- * @data: data to read/write
555
- *
556
- * Perform an an I2C read/write operation via the SCU. All locking is
557
- * handled for the caller. This function may sleep.
558
- *
559
- * Returns an error code or 0 on success.
560
- *
561
- * This has to be in the IPC driver for the locking.
562
- */
563
- int intel_scu_ipc_i2c_cntrl (u32 addr , u32 * data )
564
- {
565
- struct intel_scu_ipc_dev * scu = & ipcdev ;
566
- u32 cmd = 0 ;
567
-
568
- mutex_lock (& ipclock );
569
- if (scu -> dev == NULL ) {
570
- mutex_unlock (& ipclock );
571
- return - ENODEV ;
572
- }
573
- cmd = (addr >> 24 ) & 0xFF ;
574
- if (cmd == IPC_I2C_READ ) {
575
- writel (addr , scu -> i2c_base + IPC_I2C_CNTRL_ADDR );
576
- /* Write not getting updated without delay */
577
- usleep_range (1000 , 2000 );
578
- * data = readl (scu -> i2c_base + I2C_DATA_ADDR );
579
- } else if (cmd == IPC_I2C_WRITE ) {
580
- writel (* data , scu -> i2c_base + I2C_DATA_ADDR );
581
- usleep_range (1000 , 2000 );
582
- writel (addr , scu -> i2c_base + IPC_I2C_CNTRL_ADDR );
583
- } else {
584
- dev_err (scu -> dev ,
585
- "intel_scu_ipc: I2C INVALID_CMD = 0x%x\n" , cmd );
586
-
587
- mutex_unlock (& ipclock );
588
- return - EIO ;
589
- }
590
- mutex_unlock (& ipclock );
591
- return 0 ;
592
- }
593
- EXPORT_SYMBOL (intel_scu_ipc_i2c_cntrl );
594
-
595
522
/*
596
523
* Interrupt handler gets called when ioc bit of IPC_COMMAND_REG set to 1
597
524
* When ioc bit is set to 1, caller api must wait for interrupt handler called
@@ -622,15 +549,10 @@ static int ipc_probe(struct pci_dev *pdev, const struct pci_device_id *id)
622
549
{
623
550
int err ;
624
551
struct intel_scu_ipc_dev * scu = & ipcdev ;
625
- struct intel_scu_ipc_pdata_t * pdata ;
626
552
627
553
if (scu -> dev ) /* We support only one SCU */
628
554
return - EBUSY ;
629
555
630
- pdata = (struct intel_scu_ipc_pdata_t * )id -> driver_data ;
631
- if (!pdata )
632
- return - ENODEV ;
633
-
634
556
err = pcim_enable_device (pdev );
635
557
if (err )
636
558
return err ;
@@ -643,10 +565,6 @@ static int ipc_probe(struct pci_dev *pdev, const struct pci_device_id *id)
643
565
644
566
scu -> ipc_base = pcim_iomap_table (pdev )[0 ];
645
567
646
- scu -> i2c_base = ioremap_nocache (pdata -> i2c_base , pdata -> i2c_len );
647
- if (!scu -> i2c_base )
648
- return - ENOMEM ;
649
-
650
568
err = devm_request_irq (& pdev -> dev , pdev -> irq , ioc , 0 , "intel_scu_ipc" ,
651
569
scu );
652
570
if (err )
@@ -661,12 +579,10 @@ static int ipc_probe(struct pci_dev *pdev, const struct pci_device_id *id)
661
579
return 0 ;
662
580
}
663
581
664
- #define SCU_DEVICE (id , pdata ) {PCI_VDEVICE(INTEL, id), (kernel_ulong_t)&pdata}
665
-
666
582
static const struct pci_device_id pci_ids [] = {
667
- SCU_DEVICE ( PCI_DEVICE_ID_PENWELL , intel_scu_ipc_penwell_pdata ) ,
668
- SCU_DEVICE ( PCI_DEVICE_ID_CLOVERVIEW , intel_scu_ipc_penwell_pdata ) ,
669
- SCU_DEVICE ( PCI_DEVICE_ID_TANGIER , intel_scu_ipc_tangier_pdata ) ,
583
+ { PCI_VDEVICE ( INTEL , 0x080e ) } ,
584
+ { PCI_VDEVICE ( INTEL , 0x08ea ) } ,
585
+ { PCI_VDEVICE ( INTEL , 0x11a0 ) } ,
670
586
{}
671
587
};
672
588
0 commit comments