Skip to content

Commit ee305a1

Browse files
committed
media: apple: isp: Use a second region for MBOX_IRQ_{DOORBELL,ACK}
t8112 uses a different register layout. Signed-off-by: Janne Grunau <j@jannau.net>
1 parent 87ca4ad commit ee305a1

5 files changed

Lines changed: 19 additions & 7 deletions

File tree

drivers/media/platform/apple/isp/isp-drv.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,12 @@ static int apple_isp_probe(struct platform_device *pdev)
276276
goto detach_genpd;
277277
}
278278

279+
isp->mbox2 = devm_platform_ioremap_resource_byname(pdev, "mbox2");
280+
if (IS_ERR(isp->mbox2)) {
281+
err = PTR_ERR(isp->mbox2);
282+
goto detach_genpd;
283+
}
284+
279285
isp->irq = platform_get_irq(pdev, 0);
280286
if (isp->irq < 0) {
281287
err = isp->irq;

drivers/media/platform/apple/isp/isp-drv.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,7 @@ struct apple_isp {
199199
void __iomem *coproc;
200200
void __iomem *mbox;
201201
void __iomem *gpio;
202+
void __iomem *mbox2;
202203

203204
struct iommu_domain *domain;
204205
unsigned long shift;

drivers/media/platform/apple/isp/isp-fw.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ static irqreturn_t apple_isp_isr(int irq, void *dev)
122122
{
123123
struct apple_isp *isp = dev;
124124

125-
isp_mbox_write32(isp, ISP_MBOX_IRQ_ACK,
125+
isp_mbox2_write32(isp, ISP_MBOX2_IRQ_ACK,
126126
isp_mbox_read32(isp, ISP_MBOX_IRQ_INTERRUPT));
127127

128128
return IRQ_WAKE_THREAD;

drivers/media/platform/apple/isp/isp-ipc.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ static int chan_handle_once(struct apple_isp *isp, struct isp_channel *chan)
118118

119119
chan_write_msg(isp, chan, &chan->rsp);
120120

121-
isp_mbox_write32(isp, ISP_MBOX_IRQ_DOORBELL, chan->doorbell);
121+
isp_mbox2_write32(isp, ISP_MBOX2_IRQ_DOORBELL, chan->doorbell);
122122

123123
chan_update_cursor(chan);
124124

@@ -173,7 +173,7 @@ int ipc_chan_send(struct apple_isp *isp, struct isp_channel *chan,
173173
chan_write_msg(isp, chan, &chan->req);
174174
dma_wmb();
175175

176-
isp_mbox_write32(isp, ISP_MBOX_IRQ_DOORBELL, chan->doorbell);
176+
isp_mbox2_write32(isp, ISP_MBOX2_IRQ_DOORBELL, chan->doorbell);
177177

178178
if (!timeout)
179179
return 0;

drivers/media/platform/apple/isp/isp-regs.h

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,10 @@
2323
#define ISP_COPROC_IRQ_MASK_4 0x1400a10
2424
#define ISP_COPROC_IRQ_MASK_5 0x1400a14
2525

26-
#define ISP_MBOX_IRQ_INTERRUPT 0x000
27-
#define ISP_MBOX_IRQ_ENABLE 0x004
28-
#define ISP_MBOX_IRQ_DOORBELL 0x3f0
29-
#define ISP_MBOX_IRQ_ACK 0x3fc
26+
#define ISP_MBOX_IRQ_INTERRUPT 0x00
27+
#define ISP_MBOX_IRQ_ENABLE 0x04
28+
#define ISP_MBOX2_IRQ_DOORBELL 0x00
29+
#define ISP_MBOX2_IRQ_ACK 0x0c
3030

3131
#define ISP_GPIO_0 0x00
3232
#define ISP_GPIO_1 0x04
@@ -48,4 +48,9 @@ static inline void isp_mbox_write32(struct apple_isp *isp, u32 reg, u32 val)
4848
writel(val, isp->mbox + reg);
4949
}
5050

51+
static inline void isp_mbox2_write32(struct apple_isp *isp, u32 reg, u32 val)
52+
{
53+
writel(val, isp->mbox2 + reg);
54+
}
55+
5156
#endif /* __ISP_REGS_H__ */

0 commit comments

Comments
 (0)