* [PATCH 2/2] powerpc/85xx: handle the eLBC error interrupt if it exist in dts
@ 2014-01-07 6:27 Dongsheng Wang
2014-01-07 6:58 ` Scott Wood
0 siblings, 1 reply; 5+ messages in thread
From: Dongsheng Wang @ 2014-01-07 6:27 UTC (permalink / raw)
To: scottwood; +Cc: linuxppc-dev, Wang Dongsheng, Shaohui Xie
From: Wang Dongsheng <dongsheng.wang@freescale.com>
On P3041, P1020, P1021, P1022, P1023 eLBC event interrupts are routed
to Int9(P3041) & Int3(P102x) while ELBC error interrupts are routed to
Int0, we need to call request_irq for each.
Signed-off-by: Shaohui Xie <Shaohui.Xie@freescale.com>
Signed-off-by: Wang Dongsheng <dongsheng.wang@freescale.com>
Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
diff --git a/arch/powerpc/include/asm/fsl_lbc.h b/arch/powerpc/include/asm/fsl_lbc.h
index 420b453..067fb0d 100644
--- a/arch/powerpc/include/asm/fsl_lbc.h
+++ b/arch/powerpc/include/asm/fsl_lbc.h
@@ -285,7 +285,7 @@ struct fsl_lbc_ctrl {
/* device info */
struct device *dev;
struct fsl_lbc_regs __iomem *regs;
- int irq;
+ int irq[2];
wait_queue_head_t irq_wait;
spinlock_t lock;
void *nand;
diff --git a/arch/powerpc/sysdev/fsl_lbc.c b/arch/powerpc/sysdev/fsl_lbc.c
index 6bc5a54..d631022 100644
--- a/arch/powerpc/sysdev/fsl_lbc.c
+++ b/arch/powerpc/sysdev/fsl_lbc.c
@@ -214,10 +214,14 @@ static irqreturn_t fsl_lbc_ctrl_irq(int irqno, void *data)
struct fsl_lbc_ctrl *ctrl = data;
struct fsl_lbc_regs __iomem *lbc = ctrl->regs;
u32 status;
+ unsigned long flags;
+ spin_lock_irqsave(&fsl_lbc_lock, flags);
status = in_be32(&lbc->ltesr);
- if (!status)
+ if (!status) {
+ spin_unlock_irqrestore(&fsl_lbc_lock, flags);
return IRQ_NONE;
+ }
out_be32(&lbc->ltesr, LTESR_CLEAR);
out_be32(&lbc->lteatr, 0);
@@ -260,6 +264,7 @@ static irqreturn_t fsl_lbc_ctrl_irq(int irqno, void *data)
if (status & ~LTESR_MASK)
dev_err(ctrl->dev, "Unknown error: "
"LTESR 0x%08X\n", status);
+ spin_unlock_irqrestore(&fsl_lbc_lock, flags);
return IRQ_HANDLED;
}
@@ -298,8 +303,8 @@ static int fsl_lbc_ctrl_probe(struct platform_device *dev)
goto err;
}
- fsl_lbc_ctrl_dev->irq = irq_of_parse_and_map(dev->dev.of_node, 0);
- if (fsl_lbc_ctrl_dev->irq == NO_IRQ) {
+ fsl_lbc_ctrl_dev->irq[0] = irq_of_parse_and_map(dev->dev.of_node, 0);
+ if (!fsl_lbc_ctrl_dev->irq[0]) {
dev_err(&dev->dev, "failed to get irq resource\n");
ret = -ENODEV;
goto err;
@@ -311,20 +316,34 @@ static int fsl_lbc_ctrl_probe(struct platform_device *dev)
if (ret < 0)
goto err;
- ret = request_irq(fsl_lbc_ctrl_dev->irq, fsl_lbc_ctrl_irq, 0,
+ ret = request_irq(fsl_lbc_ctrl_dev->irq[0], fsl_lbc_ctrl_irq, 0,
"fsl-lbc", fsl_lbc_ctrl_dev);
if (ret != 0) {
dev_err(&dev->dev, "failed to install irq (%d)\n",
- fsl_lbc_ctrl_dev->irq);
- ret = fsl_lbc_ctrl_dev->irq;
+ fsl_lbc_ctrl_dev->irq[0]);
+ ret = fsl_lbc_ctrl_dev->irq[0];
goto err;
}
+ fsl_lbc_ctrl_dev->irq[1] = irq_of_parse_and_map(dev->dev.of_node, 1);
+ if (fsl_lbc_ctrl_dev->irq[1]) {
+ ret = request_irq(fsl_lbc_ctrl_dev->irq[1], fsl_lbc_ctrl_irq,
+ IRQF_SHARED, "fsl-lbc-err", fsl_lbc_ctrl_dev);
+ if (ret) {
+ dev_err(&dev->dev, "failed to install irq (%d)\n",
+ fsl_lbc_ctrl_dev->irq[1]);
+ ret = fsl_lbc_ctrl_dev->irq[1];
+ goto err1;
+ }
+ }
+
/* Enable interrupts for any detected events */
out_be32(&fsl_lbc_ctrl_dev->regs->lteir, LTEIR_ENABLE);
return 0;
+err1:
+ free_irq(fsl_lbc_ctrl_dev->irq[0], fsl_lbc_ctrl_dev);
err:
iounmap(fsl_lbc_ctrl_dev->regs);
kfree(fsl_lbc_ctrl_dev);
--
1.8.5
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 2/2] powerpc/85xx: handle the eLBC error interrupt if it exist in dts
2014-01-07 6:27 [PATCH 2/2] powerpc/85xx: handle the eLBC error interrupt if it exist in dts Dongsheng Wang
@ 2014-01-07 6:58 ` Scott Wood
2014-01-07 10:01 ` Dongsheng.Wang
0 siblings, 1 reply; 5+ messages in thread
From: Scott Wood @ 2014-01-07 6:58 UTC (permalink / raw)
To: Dongsheng Wang; +Cc: linuxppc-dev, Shaohui Xie
On Tue, 2014-01-07 at 14:27 +0800, Dongsheng Wang wrote:
> From: Wang Dongsheng <dongsheng.wang@freescale.com>
AFAICT this patch was originally written by Shaohui Xie.
> On P3041, P1020, P1021, P1022, P1023 eLBC event interrupts are routed
> to Int9(P3041) & Int3(P102x) while ELBC error interrupts are routed to
> Int0, we need to call request_irq for each.
For p3041 I thought that was only on early silicon revs that we don't
support anymore.
As for p102x, have you tested that this is actually what happens? How
would we distinguish eLBC errors from other error sources, given that
there's no EISR0? Do we just hope that no other error interrupts
happen?
-Scott
^ permalink raw reply [flat|nested] 5+ messages in thread
* RE: [PATCH 2/2] powerpc/85xx: handle the eLBC error interrupt if it exist in dts
2014-01-07 6:58 ` Scott Wood
@ 2014-01-07 10:01 ` Dongsheng.Wang
2014-01-07 20:45 ` Scott Wood
0 siblings, 1 reply; 5+ messages in thread
From: Dongsheng.Wang @ 2014-01-07 10:01 UTC (permalink / raw)
To: Scott Wood; +Cc: linuxppc-dev@lists.ozlabs.org, Shaohui Xie
DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogV29vZCBTY290dC1CMDc0
MjENCj4gU2VudDogVHVlc2RheSwgSmFudWFyeSAwNywgMjAxNCAyOjU4IFBNDQo+IFRvOiBXYW5n
IERvbmdzaGVuZy1CNDA1MzQNCj4gQ2M6IGxpbnV4cHBjLWRldkBsaXN0cy5vemxhYnMub3JnOyBY
aWUgU2hhb2h1aS1CMjE5ODk7IEt1bWFyIEdhbGENCj4gU3ViamVjdDogUmU6IFtQQVRDSCAyLzJd
IHBvd2VycGMvODV4eDogaGFuZGxlIHRoZSBlTEJDIGVycm9yIGludGVycnVwdCBpZiBpdA0KPiBl
eGlzdCBpbiBkdHMNCj4gDQo+IE9uIFR1ZSwgMjAxNC0wMS0wNyBhdCAxNDoyNyArMDgwMCwgRG9u
Z3NoZW5nIFdhbmcgd3JvdGU6DQo+ID4gRnJvbTogV2FuZyBEb25nc2hlbmcgPGRvbmdzaGVuZy53
YW5nQGZyZWVzY2FsZS5jb20+DQo+IA0KPiBBRkFJQ1QgdGhpcyBwYXRjaCB3YXMgb3JpZ2luYWxs
eSB3cml0dGVuIGJ5IFNoYW9odWkgWGllLg0KPiANCj4gPiBPbiBQMzA0MSwgUDEwMjAsIFAxMDIx
LCBQMTAyMiwgUDEwMjMgZUxCQyBldmVudCBpbnRlcnJ1cHRzIGFyZSByb3V0ZWQNCj4gPiB0byBJ
bnQ5KFAzMDQxKSAmIEludDMoUDEwMngpIHdoaWxlIEVMQkMgZXJyb3IgaW50ZXJydXB0cyBhcmUg
cm91dGVkIHRvDQo+ID4gSW50MCwgd2UgbmVlZCB0byBjYWxsIHJlcXVlc3RfaXJxIGZvciBlYWNo
Lg0KPiANCj4gRm9yIHAzMDQxIEkgdGhvdWdodCB0aGF0IHdhcyBvbmx5IG9uIGVhcmx5IHNpbGlj
b24gcmV2cyB0aGF0IHdlIGRvbid0DQo+IHN1cHBvcnQgYW55bW9yZS4NCj4gDQo+IEFzIGZvciBw
MTAyeCwgaGF2ZSB5b3UgdGVzdGVkIHRoYXQgdGhpcyBpcyBhY3R1YWxseSB3aGF0IGhhcHBlbnM/
ICBIb3cNCj4gd291bGQgd2UgZGlzdGluZ3Vpc2ggZUxCQyBlcnJvcnMgZnJvbSBvdGhlciBlcnJv
ciBzb3VyY2VzLCBnaXZlbiB0aGF0DQo+IHRoZXJlJ3Mgbm8gRUlTUjA/ICBEbyB3ZSBqdXN0IGhv
cGUgdGhhdCBubyBvdGhlciBlcnJvciBpbnRlcnJ1cHRzDQo+IGhhcHBlbj8NClllcywgSSB0ZXN0
ZWQuIFRoZSBpbnRlcnJ1cHQgaXMgc2hhcmQgZUxCQyBpbnRlcnJ1cHQgaGFuZGxlciBjb3VsZCBj
aGVjayB0aGUgZXJyb3IuDQpUaGlzIHBhdGNoIGlzIGZpeCAibm9ib2R5IGNhcmVkIiB0aGUgZXJy
b3IgaW50ZXJydXB0LiBBZnRlciBzbGVlcCByZXN1bWUgdGhlIGxiYw0Kd2lsbCBnZXQgYSBjaGlw
IHNlbGVjdCBlcnJvci4NCg0KLURvbmdzaGVuZw0KDQo+IA0KPiAtU2NvdHQNCj4gDQoNCg==
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 2/2] powerpc/85xx: handle the eLBC error interrupt if it exist in dts
2014-01-07 10:01 ` Dongsheng.Wang
@ 2014-01-07 20:45 ` Scott Wood
2014-01-08 7:12 ` Dongsheng.Wang
0 siblings, 1 reply; 5+ messages in thread
From: Scott Wood @ 2014-01-07 20:45 UTC (permalink / raw)
To: Wang Dongsheng-B40534; +Cc: linuxppc-dev@lists.ozlabs.org, Xie Shaohui-B21989
On Tue, 2014-01-07 at 04:01 -0600, Wang Dongsheng-B40534 wrote:
>
> > -----Original Message-----
> > From: Wood Scott-B07421
> > Sent: Tuesday, January 07, 2014 2:58 PM
> > To: Wang Dongsheng-B40534
> > Cc: linuxppc-dev@lists.ozlabs.org; Xie Shaohui-B21989; Kumar Gala
> > Subject: Re: [PATCH 2/2] powerpc/85xx: handle the eLBC error interrupt if it
> > exist in dts
> >
> > On Tue, 2014-01-07 at 14:27 +0800, Dongsheng Wang wrote:
> > > From: Wang Dongsheng <dongsheng.wang@freescale.com>
> >
> > AFAICT this patch was originally written by Shaohui Xie.
> >
> > > On P3041, P1020, P1021, P1022, P1023 eLBC event interrupts are routed
> > > to Int9(P3041) & Int3(P102x) while ELBC error interrupts are routed to
> > > Int0, we need to call request_irq for each.
> >
> > For p3041 I thought that was only on early silicon revs that we don't
> > support anymore.
> >
> > As for p102x, have you tested that this is actually what happens? How
> > would we distinguish eLBC errors from other error sources, given that
> > there's no EISR0? Do we just hope that no other error interrupts
> > happen?
> Yes, I tested. The interrupt is shard eLBC interrupt handler could check the error.
> This patch is fix "nobody cared" the error interrupt. After sleep resume the lbc
> will get a chip select error.
s/no other error interrupts happen/no other error interrupts for which
we don't have a handler registered or which don't even have an
associated status register happen/
-Scott
^ permalink raw reply [flat|nested] 5+ messages in thread
* RE: [PATCH 2/2] powerpc/85xx: handle the eLBC error interrupt if it exist in dts
2014-01-07 20:45 ` Scott Wood
@ 2014-01-08 7:12 ` Dongsheng.Wang
0 siblings, 0 replies; 5+ messages in thread
From: Dongsheng.Wang @ 2014-01-08 7:12 UTC (permalink / raw)
To: Scott Wood; +Cc: linuxppc-dev@lists.ozlabs.org, Shaohui Xie
DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogV29vZCBTY290dC1CMDc0
MjENCj4gU2VudDogV2VkbmVzZGF5LCBKYW51YXJ5IDA4LCAyMDE0IDQ6NDUgQU0NCj4gVG86IFdh
bmcgRG9uZ3NoZW5nLUI0MDUzNA0KPiBDYzogbGludXhwcGMtZGV2QGxpc3RzLm96bGFicy5vcmc7
IFhpZSBTaGFvaHVpLUIyMTk4OTsgS3VtYXIgR2FsYQ0KPiBTdWJqZWN0OiBSZTogW1BBVENIIDIv
Ml0gcG93ZXJwYy84NXh4OiBoYW5kbGUgdGhlIGVMQkMgZXJyb3IgaW50ZXJydXB0IGlmIGl0DQo+
IGV4aXN0IGluIGR0cw0KPiANCj4gT24gVHVlLCAyMDE0LTAxLTA3IGF0IDA0OjAxIC0wNjAwLCBX
YW5nIERvbmdzaGVuZy1CNDA1MzQgd3JvdGU6DQo+ID4NCj4gPiA+IC0tLS0tT3JpZ2luYWwgTWVz
c2FnZS0tLS0tDQo+ID4gPiBGcm9tOiBXb29kIFNjb3R0LUIwNzQyMQ0KPiA+ID4gU2VudDogVHVl
c2RheSwgSmFudWFyeSAwNywgMjAxNCAyOjU4IFBNDQo+ID4gPiBUbzogV2FuZyBEb25nc2hlbmct
QjQwNTM0DQo+ID4gPiBDYzogbGludXhwcGMtZGV2QGxpc3RzLm96bGFicy5vcmc7IFhpZSBTaGFv
aHVpLUIyMTk4OTsgS3VtYXIgR2FsYQ0KPiA+ID4gU3ViamVjdDogUmU6IFtQQVRDSCAyLzJdIHBv
d2VycGMvODV4eDogaGFuZGxlIHRoZSBlTEJDIGVycm9yIGludGVycnVwdCBpZiBpdA0KPiA+ID4g
ZXhpc3QgaW4gZHRzDQo+ID4gPg0KPiA+ID4gT24gVHVlLCAyMDE0LTAxLTA3IGF0IDE0OjI3ICsw
ODAwLCBEb25nc2hlbmcgV2FuZyB3cm90ZToNCj4gPiA+ID4gRnJvbTogV2FuZyBEb25nc2hlbmcg
PGRvbmdzaGVuZy53YW5nQGZyZWVzY2FsZS5jb20+DQo+ID4gPg0KPiA+ID4gQUZBSUNUIHRoaXMg
cGF0Y2ggd2FzIG9yaWdpbmFsbHkgd3JpdHRlbiBieSBTaGFvaHVpIFhpZS4NCj4gPiA+DQo+ID4g
PiA+IE9uIFAzMDQxLCBQMTAyMCwgUDEwMjEsIFAxMDIyLCBQMTAyMyBlTEJDIGV2ZW50IGludGVy
cnVwdHMgYXJlIHJvdXRlZA0KPiA+ID4gPiB0byBJbnQ5KFAzMDQxKSAmIEludDMoUDEwMngpIHdo
aWxlIEVMQkMgZXJyb3IgaW50ZXJydXB0cyBhcmUgcm91dGVkIHRvDQo+ID4gPiA+IEludDAsIHdl
IG5lZWQgdG8gY2FsbCByZXF1ZXN0X2lycSBmb3IgZWFjaC4NCj4gPiA+DQo+ID4gPiBGb3IgcDMw
NDEgSSB0aG91Z2h0IHRoYXQgd2FzIG9ubHkgb24gZWFybHkgc2lsaWNvbiByZXZzIHRoYXQgd2Ug
ZG9uJ3QNCj4gPiA+IHN1cHBvcnQgYW55bW9yZS4NCj4gPiA+DQo+ID4gPiBBcyBmb3IgcDEwMngs
IGhhdmUgeW91IHRlc3RlZCB0aGF0IHRoaXMgaXMgYWN0dWFsbHkgd2hhdCBoYXBwZW5zPyAgSG93
DQo+ID4gPiB3b3VsZCB3ZSBkaXN0aW5ndWlzaCBlTEJDIGVycm9ycyBmcm9tIG90aGVyIGVycm9y
IHNvdXJjZXMsIGdpdmVuIHRoYXQNCj4gPiA+IHRoZXJlJ3Mgbm8gRUlTUjA/ICBEbyB3ZSBqdXN0
IGhvcGUgdGhhdCBubyBvdGhlciBlcnJvciBpbnRlcnJ1cHRzDQo+ID4gPiBoYXBwZW4/DQo+ID4g
WWVzLCBJIHRlc3RlZC4gVGhlIGludGVycnVwdCBpcyBzaGFyZCBlTEJDIGludGVycnVwdCBoYW5k
bGVyIGNvdWxkIGNoZWNrIHRoZQ0KPiBlcnJvci4NCj4gPiBUaGlzIHBhdGNoIGlzIGZpeCAibm9i
b2R5IGNhcmVkIiB0aGUgZXJyb3IgaW50ZXJydXB0LiBBZnRlciBzbGVlcCByZXN1bWUgdGhlDQo+
IGxiYw0KPiA+IHdpbGwgZ2V0IGEgY2hpcCBzZWxlY3QgZXJyb3IuDQo+IA0KPiBzL25vIG90aGVy
IGVycm9yIGludGVycnVwdHMgaGFwcGVuL25vIG90aGVyIGVycm9yIGludGVycnVwdHMgZm9yIHdo
aWNoDQo+IHdlIGRvbid0IGhhdmUgYSBoYW5kbGVyIHJlZ2lzdGVyZWQgb3Igd2hpY2ggZG9uJ3Qg
ZXZlbiBoYXZlIGFuDQo+IGFzc29jaWF0ZWQgc3RhdHVzIHJlZ2lzdGVyIGhhcHBlbi8NCj4gDQpJ
ZiB0aGUgaXAtYmxvY2sgZG9lcyBub3QgaGFuZGxlIHRoZWlyIGVycm9yIGludGVycnVwdCBpcyBh
IGlwLWJsb2NrIGlzc3VlIHRoYXQuDQpTaW5jZSB0aGUgdXNlIG9mIHRoaXMgc2hhcmVkIGludGVy
cnVwdCBtdXN0IG1haW50YWluIHRoZWlyIHN0YXR1cywgb25jZSB0aGVyZQ0KaXMgbm8gZGVhbCBz
aGFyZWQgaW50ZXJydXB0LCBpdCB3aWxsIGFmZmVjdCB0aGUgb3RoZXIgaXAtYmxvY2suDQo=
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2014-01-08 7:12 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-01-07 6:27 [PATCH 2/2] powerpc/85xx: handle the eLBC error interrupt if it exist in dts Dongsheng Wang
2014-01-07 6:58 ` Scott Wood
2014-01-07 10:01 ` Dongsheng.Wang
2014-01-07 20:45 ` Scott Wood
2014-01-08 7:12 ` Dongsheng.Wang
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).