Merge branch 'iomem' into release
This commit is contained in:
commit
dc3397437d
@ -636,17 +636,21 @@ EXPORT_SYMBOL(acpi_os_write_port);
|
|||||||
acpi_status
|
acpi_status
|
||||||
acpi_os_read_memory(acpi_physical_address phys_addr, u32 * value, u32 width)
|
acpi_os_read_memory(acpi_physical_address phys_addr, u32 * value, u32 width)
|
||||||
{
|
{
|
||||||
u32 dummy;
|
|
||||||
void __iomem *virt_addr;
|
void __iomem *virt_addr;
|
||||||
int size = width / 8, unmap = 0;
|
unsigned int size = width / 8;
|
||||||
|
bool unmap = false;
|
||||||
|
u32 dummy;
|
||||||
|
|
||||||
rcu_read_lock();
|
rcu_read_lock();
|
||||||
virt_addr = acpi_map_vaddr_lookup(phys_addr, size);
|
virt_addr = acpi_map_vaddr_lookup(phys_addr, size);
|
||||||
rcu_read_unlock();
|
|
||||||
if (!virt_addr) {
|
if (!virt_addr) {
|
||||||
|
rcu_read_unlock();
|
||||||
virt_addr = acpi_os_ioremap(phys_addr, size);
|
virt_addr = acpi_os_ioremap(phys_addr, size);
|
||||||
unmap = 1;
|
if (!virt_addr)
|
||||||
|
return AE_BAD_ADDRESS;
|
||||||
|
unmap = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!value)
|
if (!value)
|
||||||
value = &dummy;
|
value = &dummy;
|
||||||
|
|
||||||
@ -666,6 +670,8 @@ acpi_os_read_memory(acpi_physical_address phys_addr, u32 * value, u32 width)
|
|||||||
|
|
||||||
if (unmap)
|
if (unmap)
|
||||||
iounmap(virt_addr);
|
iounmap(virt_addr);
|
||||||
|
else
|
||||||
|
rcu_read_unlock();
|
||||||
|
|
||||||
return AE_OK;
|
return AE_OK;
|
||||||
}
|
}
|
||||||
@ -674,14 +680,17 @@ acpi_status
|
|||||||
acpi_os_write_memory(acpi_physical_address phys_addr, u32 value, u32 width)
|
acpi_os_write_memory(acpi_physical_address phys_addr, u32 value, u32 width)
|
||||||
{
|
{
|
||||||
void __iomem *virt_addr;
|
void __iomem *virt_addr;
|
||||||
int size = width / 8, unmap = 0;
|
unsigned int size = width / 8;
|
||||||
|
bool unmap = false;
|
||||||
|
|
||||||
rcu_read_lock();
|
rcu_read_lock();
|
||||||
virt_addr = acpi_map_vaddr_lookup(phys_addr, size);
|
virt_addr = acpi_map_vaddr_lookup(phys_addr, size);
|
||||||
rcu_read_unlock();
|
|
||||||
if (!virt_addr) {
|
if (!virt_addr) {
|
||||||
|
rcu_read_unlock();
|
||||||
virt_addr = acpi_os_ioremap(phys_addr, size);
|
virt_addr = acpi_os_ioremap(phys_addr, size);
|
||||||
unmap = 1;
|
if (!virt_addr)
|
||||||
|
return AE_BAD_ADDRESS;
|
||||||
|
unmap = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (width) {
|
switch (width) {
|
||||||
@ -700,6 +709,8 @@ acpi_os_write_memory(acpi_physical_address phys_addr, u32 value, u32 width)
|
|||||||
|
|
||||||
if (unmap)
|
if (unmap)
|
||||||
iounmap(virt_addr);
|
iounmap(virt_addr);
|
||||||
|
else
|
||||||
|
rcu_read_unlock();
|
||||||
|
|
||||||
return AE_OK;
|
return AE_OK;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user