Re: Re: EPIC Vs OpenPIC (RFC)
From: Sarnath Kannan <hidden>
Date: 2001-11-04 10:45:14
Somehow I feel that Patching or changing the openPIC code would make it shabby. Why should we change open_pic code, just because that EPIC is non-conforming ? The best is to rewrite open_pic code for EPIC. ( ofcourse, we can reuse code. ) I dont find anything wrong with open_pic interface. If people dont follow standards, we dont make standards comply with them. We make them comply with standards. Sarnath On Sat, 03 Nov 2001 Dag Nygren wrote :
quoted
Mark A. Greer wrote: This is along the lines that I was thinking exceptadd a struct member to specifyquoted
whether edge or level sensitive--i.e., separatemembers for hi/lo and edge/level Actually this evolved after I posted it :-), after I started to modify open_pic.cquoted
What exactly is the "IrqEnable" for? Is this so youcan set up the IRQ but notquoted
enable it? Then the driver can enable it later andits set up correctly (e.g.,quoted
I2C)??Not really, it was more or less a mistake in the first draft. Would there be a need for that ?quoted
Doesn't the new struct eliminate the need for"RegOffset"? Have to think about that when implementing the stuff.quoted
And as you noted, "programmer_switch_irq" probably isn't needed either.Right? Yep, and I also came up with another scheme for the cascading as the special handling for chrp is actually.....drum roll.... a cascade! And it would remove the i8259 refs from the openpic stuff.quoted
If you're up to it, how about implementing, testing,then posting a patch forquoted
everyone to check out??I'm trying, but I am a bit scared of destroying too much of the open_pic code... Here is the newest suggestion for that interface: typedef enum irq_polarity_en { OP_IRQ_POS = 1, OP_IRQ_NEG = 0 } irq_polarity_type; typedef enum irq_sense_en { OP_IRQ_LEVEL = 1, OP_IRQ_EDGE = 0 } irq_sense_type; typedef struct op
PICIrq;
u_int Vector;
u_char Priority;
irq_sense_type IrqSense;
irq_polarity_type IrqPolarity;
irq_polarity_type IrqPolarity;
int (*CascadeHandler)();
} openpic_irq_def;
typedef struct openpic_def_str {
struct OpenPIC *OpenPIC_Addr;
int main_pic;
u_char RegOffset; /* 0 for "standard", 16
for MPC107 */
int programmer_switch_irq;
openpic_irq_def *IRQdef; /* The lovest vector
first in the table !!! */
} openpic_def;
Comments?
Dag
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/