diff --git a/Makefile b/Makefile index c8a4bfd..514f38b 100644 --- a/Makefile +++ b/Makefile @@ -78,7 +78,8 @@ CSRCS= \ $(SRCDIR)/xhdi_sd.c \ $(SRCDIR)/xhdi_interface.c \ $(SRCDIR)/pci.c \ - $(SRCDIR)/dspi.c + $(SRCDIR)/dspi.c \ + $(SRCDIR)/driver_vec.c ASRCS= \ $(SRCDIR)/startcf.S \ diff --git a/include/driver_vec.h b/include/driver_vec.h new file mode 100644 index 0000000..02d47a0 --- /dev/null +++ b/include/driver_vec.h @@ -0,0 +1,55 @@ +/* + * driver_vec.h + * + * Interface for exposure of BaS drivers to the OS + * + * This file is part of BaS_gcc. + * + * BaS_gcc is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * BaS_gcc is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with BaS_gcc. If not, see . + * + * Created on: 24.10.2013 + * Author: Markus Fröschle + */ + +#ifndef _DRIVER_VEC_H_ +#define _DRIVER_VEC_H_ + +typedef enum driver_type +{ + blockdev, + chardev, + video, + xhdi +} DRIVER_TYPE; + +typedef struct generic_driver_interface +{ + int (*read)(); + int (*write)(); + int (*ioctl)(); +} GENERIC_DRIVER_INTERFACE; + +typedef struct xhdi_driver_interface +{ + long xhdivec; +} XHDI_DRIVER_INTERFACE; + +typedef union driver_interface +{ + enum driver_type type; + struct generic_driver_interface gdi; + struct xhdi_driver_interface xhdi; +} DRIVER_INTERFACE; + +#endif /* _DRIVER_VEC_H_ */ diff --git a/sources/driver_vec.c b/sources/driver_vec.c new file mode 100644 index 0000000..910f6ca --- /dev/null +++ b/sources/driver_vec.c @@ -0,0 +1,33 @@ +/* + * driver_vec.c + * + * Expose BaS drivers to OS + * + * This file is part of BaS_gcc. + * + * BaS_gcc is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * BaS_gcc is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with BaS_gcc. If not, see . + * + * + * Created on: 24.10.2013 + * Author: Markus Fröschle + */ + +#include +#include "driver_vec.h" +#include "xhdi_sd.h" + +static union driver_interface interfaces[] = +{ + { .type = xhdi, . xhdi = {xhdi_call} } +};