16IRX_ID(
"sbus_driver", 1, 0);
20extern int __local_sbus_irq_handler(
void);
22void SBUS_check_intr(
void)
24 if (!(*R_IOP_I_MASK & IOP_I_STAT_SBUS)) {
25 *R_IOP_I_MASK |= IOP_I_STAT_SBUS;
28 if (*R_IOP_I_STAT & IOP_I_STAT_SBUS) {
29 __local_sbus_irq_handler();
30 *R_IOP_I_STAT &= ~(IOP_I_STAT_SBUS);
34int SBUS_interrupt_remote(
int irq)
37 while (SBUS_get_reg(PS2_SBUS_LR_FLAG) & (1 << irq))
41 SBUS_set_reg(PS2_SBUS_LR_FLAG, 1 << irq);
44 *R_IOP_IRQ_CTRL |= (1 << PS2_IRQ_SBUS);
47 *R_IOP_IRQ_CTRL &= ~(1 << PS2_IRQ_SBUS);
52int _start(
int argc,
char *argv[])
57 if (SBUS_init() != 0) {
58 printf(
"IOP: SBUS_init() failed!\n");
59 return MODULE_NO_RESIDENT_END;
61 if (SIF2_init() != 0) {
62 printf(
"IOP: SIF2_init() failed!\n");
63 return MODULE_NO_RESIDENT_END;
65 if (SIF2_init_cmd() != 0) {
66 printf(
"IOP: SIF2_init_cmd() failed!\n");
67 return MODULE_NO_RESIDENT_END;
69 if (RegisterLibraryEntries(&_exp_sbus) != 0) {
70 printf(
"IOP: Error registering SBUS library!\n");
71 return MODULE_NO_RESIDENT_END;
74 printf(
"IOP: SBUS driver loaded!\n");
76 return MODULE_RESIDENT_END;
79int _stop(
int argc,
char *argv[])
84 ReleaseLibraryEntries(&_exp_sbus);
88 return MODULE_NO_RESIDENT_END;