38
38
39
39
struct sch_gpio {
40
40
struct gpio_chip chip ;
41
+ void __iomem * regs ;
41
42
spinlock_t lock ;
42
- unsigned short iobase ;
43
43
unsigned short resume_base ;
44
44
45
45
/* GPE handling */
@@ -75,7 +75,7 @@ static int sch_gpio_reg_get(struct sch_gpio *sch, unsigned int gpio, unsigned in
75
75
offset = sch_gpio_offset (sch , gpio , reg );
76
76
bit = sch_gpio_bit (sch , gpio );
77
77
78
- reg_val = !!(inb (sch -> iobase + offset ) & BIT (bit ));
78
+ reg_val = !!(ioread8 (sch -> regs + offset ) & BIT (bit ));
79
79
80
80
return reg_val ;
81
81
}
@@ -89,12 +89,14 @@ static void sch_gpio_reg_set(struct sch_gpio *sch, unsigned int gpio, unsigned i
89
89
offset = sch_gpio_offset (sch , gpio , reg );
90
90
bit = sch_gpio_bit (sch , gpio );
91
91
92
- reg_val = inb (sch -> iobase + offset );
92
+ reg_val = ioread8 (sch -> regs + offset );
93
93
94
94
if (val )
95
- outb ( reg_val | BIT (bit ), sch -> iobase + offset );
95
+ reg_val |= BIT (bit );
96
96
else
97
- outb ((reg_val & ~BIT (bit )), sch -> iobase + offset );
97
+ reg_val &= ~BIT (bit );
98
+
99
+ iowrite8 (reg_val , sch -> regs + offset );
98
100
}
99
101
100
102
static int sch_gpio_direction_in (struct gpio_chip * gc , unsigned int gpio_num )
@@ -267,8 +269,8 @@ static u32 sch_gpio_gpe_handler(acpi_handle gpe_device, u32 gpe, void *context)
267
269
268
270
spin_lock_irqsave (& sch -> lock , flags );
269
271
270
- core_status = inl (sch -> iobase + CORE_BANK_OFFSET + GTS );
271
- resume_status = inl (sch -> iobase + RESUME_BANK_OFFSET + GTS );
272
+ core_status = ioread32 (sch -> regs + CORE_BANK_OFFSET + GTS );
273
+ resume_status = ioread32 (sch -> regs + RESUME_BANK_OFFSET + GTS );
272
274
273
275
spin_unlock_irqrestore (& sch -> lock , flags );
274
276
@@ -319,9 +321,11 @@ static int sch_gpio_install_gpe_handler(struct sch_gpio *sch)
319
321
320
322
static int sch_gpio_probe (struct platform_device * pdev )
321
323
{
324
+ struct device * dev = & pdev -> dev ;
322
325
struct gpio_irq_chip * girq ;
323
326
struct sch_gpio * sch ;
324
327
struct resource * res ;
328
+ void __iomem * regs ;
325
329
int ret ;
326
330
327
331
sch = devm_kzalloc (& pdev -> dev , sizeof (* sch ), GFP_KERNEL );
@@ -332,12 +336,13 @@ static int sch_gpio_probe(struct platform_device *pdev)
332
336
if (!res )
333
337
return - EBUSY ;
334
338
335
- if (! devm_request_region ( & pdev -> dev , res -> start , resource_size (res ),
336
- pdev -> name ) )
339
+ regs = devm_ioport_map ( dev , res -> start , resource_size (res ));
340
+ if (! regs )
337
341
return - EBUSY ;
338
342
343
+ sch -> regs = regs ;
344
+
339
345
spin_lock_init (& sch -> lock );
340
- sch -> iobase = res -> start ;
341
346
sch -> chip = sch_gpio_chip ;
342
347
sch -> chip .label = dev_name (& pdev -> dev );
343
348
sch -> chip .parent = & pdev -> dev ;
0 commit comments