Skip to content

Commit 8962b2c

Browse files
rwk-gitLorenzo Pieralisi
authored andcommitted
PCI: rockchip: Use u32 variable to access 32-bit registers
Previously u16 variables were used to access 32-bit registers, this resulted in not all of the data being read from the registers. Also the left shift of more than 16-bits would result in moving data out of the variable. Use u32 variables to access 32-bit registers Link: https://lore.kernel.org/r/20230418074700.1083505-10-rick.wertenbroek@gmail.com Fixes: cf590b0 ("PCI: rockchip: Add EP driver for Rockchip PCIe controller") Tested-by: Damien Le Moal <dlemoal@kernel.org> Signed-off-by: Rick Wertenbroek <rick.wertenbroek@gmail.com> Signed-off-by: Lorenzo Pieralisi <lpieralisi@kernel.org> Reviewed-by: Damien Le Moal <dlemoal@kernel.org> Cc: stable@vger.kernel.org
1 parent dc73ed0 commit 8962b2c

File tree

2 files changed

+6
-5
lines changed

2 files changed

+6
-5
lines changed

drivers/pci/controller/pcie-rockchip-ep.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -271,15 +271,15 @@ static int rockchip_pcie_ep_set_msi(struct pci_epc *epc, u8 fn, u8 vfn,
271271
{
272272
struct rockchip_pcie_ep *ep = epc_get_drvdata(epc);
273273
struct rockchip_pcie *rockchip = &ep->rockchip;
274-
u16 flags;
274+
u32 flags;
275275

276276
flags = rockchip_pcie_read(rockchip,
277277
ROCKCHIP_PCIE_EP_FUNC_BASE(fn) +
278278
ROCKCHIP_PCIE_EP_MSI_CTRL_REG);
279279
flags &= ~ROCKCHIP_PCIE_EP_MSI_CTRL_MMC_MASK;
280280
flags |=
281-
((multi_msg_cap << 1) << ROCKCHIP_PCIE_EP_MSI_CTRL_MMC_OFFSET) |
282-
PCI_MSI_FLAGS_64BIT;
281+
(multi_msg_cap << ROCKCHIP_PCIE_EP_MSI_CTRL_MMC_OFFSET) |
282+
(PCI_MSI_FLAGS_64BIT << ROCKCHIP_PCIE_EP_MSI_FLAGS_OFFSET);
283283
flags &= ~ROCKCHIP_PCIE_EP_MSI_CTRL_MASK_MSI_CAP;
284284
rockchip_pcie_write(rockchip, flags,
285285
ROCKCHIP_PCIE_EP_FUNC_BASE(fn) +
@@ -291,7 +291,7 @@ static int rockchip_pcie_ep_get_msi(struct pci_epc *epc, u8 fn, u8 vfn)
291291
{
292292
struct rockchip_pcie_ep *ep = epc_get_drvdata(epc);
293293
struct rockchip_pcie *rockchip = &ep->rockchip;
294-
u16 flags;
294+
u32 flags;
295295

296296
flags = rockchip_pcie_read(rockchip,
297297
ROCKCHIP_PCIE_EP_FUNC_BASE(fn) +
@@ -352,7 +352,7 @@ static int rockchip_pcie_ep_send_msi_irq(struct rockchip_pcie_ep *ep, u8 fn,
352352
u8 interrupt_num)
353353
{
354354
struct rockchip_pcie *rockchip = &ep->rockchip;
355-
u16 flags, mme, data, data_mask;
355+
u32 flags, mme, data, data_mask;
356356
u8 msi_count;
357357
u64 pci_addr;
358358
u32 r;

drivers/pci/controller/pcie-rockchip.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -227,6 +227,7 @@
227227
#define ROCKCHIP_PCIE_EP_CMD_STATUS 0x4
228228
#define ROCKCHIP_PCIE_EP_CMD_STATUS_IS BIT(19)
229229
#define ROCKCHIP_PCIE_EP_MSI_CTRL_REG 0x90
230+
#define ROCKCHIP_PCIE_EP_MSI_FLAGS_OFFSET 16
230231
#define ROCKCHIP_PCIE_EP_MSI_CTRL_MMC_OFFSET 17
231232
#define ROCKCHIP_PCIE_EP_MSI_CTRL_MMC_MASK GENMASK(19, 17)
232233
#define ROCKCHIP_PCIE_EP_MSI_CTRL_MME_OFFSET 20

0 commit comments

Comments
 (0)