11#![ feature( used_with_arg) ]
22
3- use std:: { error :: Error , ptr:: NonNull } ;
3+ use std:: ptr:: NonNull ;
44
55use log:: debug;
6- use rdrive:: {
7- IrqConfig , IrqId , KError , PlatformDevice , driver, get_list,
8- probe:: OnProbeError ,
9- register:: { DriverRegister , FdtInfo , ProbeKind , ProbeLevel , ProbePriority } ,
10- } ;
6+ use rdrive:: { driver, get_list} ;
7+
8+ use crate :: intc:: IrqTest ;
119
1210pub mod blk;
1311pub mod clk;
12+ pub mod intc;
1413pub mod timer;
1514
1615fn main ( ) {
@@ -25,17 +24,7 @@ fn main() {
2524 } )
2625 . unwrap ( ) ;
2726
28- let register = DriverRegister {
29- name : "IrqTest" ,
30- probe_kinds : & [ ProbeKind :: Fdt {
31- compatibles : & [ "arm,cortex-a15-gic" ] ,
32- on_probe : probe_intc,
33- } ] ,
34- level : ProbeLevel :: PreKernel ,
35- priority : ProbePriority :: INTC ,
36- } ;
37-
38- rdrive:: register_add ( register) ;
27+ rdrive:: register_add ( intc:: register ( ) ) ;
3928 rdrive:: register_add ( timer:: register ( ) ) ;
4029 rdrive:: register_add ( clk:: register ( ) ) ;
4130 rdrive:: register_add ( blk:: register ( ) ) ;
@@ -50,6 +39,8 @@ fn main() {
5039
5140 let t = g. typed_ref :: < IrqTest > ( ) ;
5241 debug ! ( "intc: {:?}" , g. type_name( ) ) ;
42+
43+
5344
5445 assert ! ( t. is_some( ) , "Intc should be [IrqTest]" ) ;
5546 }
@@ -60,76 +51,3 @@ fn main() {
6051
6152 println ! ( "phandle 0x8000 to device id: {:?}" , id) ;
6253}
63-
64- struct IrqTest { }
65-
66- impl rdrive:: DriverGeneric for IrqTest {
67- fn open ( & mut self ) -> Result < ( ) , KError > {
68- Ok ( ( ) )
69- }
70-
71- fn close ( & mut self ) -> Result < ( ) , KError > {
72- Ok ( ( ) )
73- }
74- }
75-
76- impl rdrive:: driver:: intc:: Interface for IrqTest {
77- fn irq_enable ( & mut self , _irq : IrqId ) -> Result < ( ) , rdrive:: driver:: intc:: IntcError > {
78- todo ! ( )
79- }
80-
81- fn irq_disable ( & mut self , _irq : IrqId ) -> Result < ( ) , rdrive:: driver:: intc:: IntcError > {
82- todo ! ( )
83- }
84-
85- fn set_priority (
86- & mut self ,
87- _irq : IrqId ,
88- _priority : usize ,
89- ) -> Result < ( ) , rdrive:: driver:: intc:: IntcError > {
90- todo ! ( )
91- }
92-
93- fn set_trigger (
94- & mut self ,
95- _irq : IrqId ,
96- _trigger : rdrive:: driver:: intc:: Trigger ,
97- ) -> Result < ( ) , rdrive:: driver:: intc:: IntcError > {
98- todo ! ( )
99- }
100-
101- fn set_target_cpu (
102- & mut self ,
103- _irq : IrqId ,
104- _cpu : rdrive:: driver:: intc:: CpuId ,
105- ) -> Result < ( ) , rdrive:: driver:: intc:: IntcError > {
106- todo ! ( )
107- }
108-
109- fn cpu_local ( & self ) -> Option < rdrive:: driver:: intc:: local:: Boxed > {
110- todo ! ( )
111- }
112-
113- fn parse_dtb_fn ( & self ) -> Option < rdrive:: driver:: intc:: FuncFdtParseConfig > {
114- Some ( fdt_parse)
115- }
116- }
117-
118- fn fdt_parse ( _prop_interrupts_one_cell : & [ u32 ] ) -> Result < IrqConfig , Box < dyn Error > > {
119- Ok ( IrqConfig {
120- irq : 0 . into ( ) ,
121- trigger : rdrive:: driver:: intc:: Trigger :: EdgeBoth ,
122- is_private : false ,
123- } )
124- }
125-
126- fn probe_intc ( fdt : FdtInfo < ' _ > , plat_dev : PlatformDevice ) -> Result < ( ) , OnProbeError > {
127- debug ! (
128- "on_probe: {}, parent intc {:?}" ,
129- fdt. node. name( ) ,
130- plat_dev. descriptor. irq_parent,
131- ) ;
132- plat_dev. register_intc ( IrqTest { } ) ;
133-
134- Ok ( ( ) )
135- }
0 commit comments