PCI/VPD: Use unaligned access helpers
Use unaligned access helpers to simplify the code. Link: https://lore.kernel.org/r/0f1c7e21-5330-72ab-139d-f5ce3c65f04a@gmail.com Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
This commit is contained in:
Родитель
06e1913d45
Коммит
2c208abd4f
|
@ -9,6 +9,7 @@
|
||||||
#include <linux/delay.h>
|
#include <linux/delay.h>
|
||||||
#include <linux/export.h>
|
#include <linux/export.h>
|
||||||
#include <linux/sched/signal.h>
|
#include <linux/sched/signal.h>
|
||||||
|
#include <asm/unaligned.h>
|
||||||
#include "pci.h"
|
#include "pci.h"
|
||||||
|
|
||||||
#define PCI_VPD_LRDT_TAG_SIZE 3
|
#define PCI_VPD_LRDT_TAG_SIZE 3
|
||||||
|
@ -19,7 +20,7 @@
|
||||||
|
|
||||||
static u16 pci_vpd_lrdt_size(const u8 *lrdt)
|
static u16 pci_vpd_lrdt_size(const u8 *lrdt)
|
||||||
{
|
{
|
||||||
return (u16)lrdt[1] + ((u16)lrdt[2] << 8);
|
return get_unaligned_le16(lrdt + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
static u8 pci_vpd_srdt_tag(const u8 *srdt)
|
static u8 pci_vpd_srdt_tag(const u8 *srdt)
|
||||||
|
@ -218,14 +219,8 @@ static ssize_t pci_vpd_write(struct pci_dev *dev, loff_t pos, size_t count,
|
||||||
return -EINTR;
|
return -EINTR;
|
||||||
|
|
||||||
while (pos < end) {
|
while (pos < end) {
|
||||||
u32 val;
|
ret = pci_user_write_config_dword(dev, vpd->cap + PCI_VPD_DATA,
|
||||||
|
get_unaligned_le32(buf));
|
||||||
val = *buf++;
|
|
||||||
val |= *buf++ << 8;
|
|
||||||
val |= *buf++ << 16;
|
|
||||||
val |= *buf++ << 24;
|
|
||||||
|
|
||||||
ret = pci_user_write_config_dword(dev, vpd->cap + PCI_VPD_DATA, val);
|
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
break;
|
break;
|
||||||
ret = pci_user_write_config_word(dev, vpd->cap + PCI_VPD_ADDR,
|
ret = pci_user_write_config_word(dev, vpd->cap + PCI_VPD_ADDR,
|
||||||
|
@ -237,6 +232,7 @@ static ssize_t pci_vpd_write(struct pci_dev *dev, loff_t pos, size_t count,
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
buf += sizeof(u32);
|
||||||
pos += sizeof(u32);
|
pos += sizeof(u32);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче