From e4fe0c085ea0f743906632bd885efcadd2ecc934 Mon Sep 17 00:00:00 2001 From: Alan Cox Date: Tue, 8 Jan 2019 01:02:04 +0000 Subject: [PATCH] linc80: support SD cards on PIO port B 5v to 3.3v convertors obviously required! --- Kernel/platform-linc80/Makefile | 10 ++++++---- Kernel/platform-linc80/config.h | 7 ++++++- Kernel/platform-linc80/discard.c | 8 +++++++- Kernel/platform-linc80/fuzix.lnk | 4 ++++ Kernel/platform-linc80/kernel.def | 2 ++ 5 files changed, 25 insertions(+), 6 deletions(-) diff --git a/Kernel/platform-linc80/Makefile b/Kernel/platform-linc80/Makefile index 6b5c5849..bb5edf3e 100644 --- a/Kernel/platform-linc80/Makefile +++ b/Kernel/platform-linc80/Makefile @@ -1,8 +1,8 @@ -ASRCS = crt0.s tricks.s commonmem.s linc80.s -CSRCS = devices.c main.c devtty.c +ASRCS = crt0.s tricks.s commonmem.s linc80.s piospi.s +CSRCS = devices.c main.c devtty.c sd.c DISCARD_CSRCS = discard.c -DISCARD_DSRCS = ../dev/devide_discard.c -DSRCS = ../dev/devide.c ../dev/mbr.c ../dev/blkdev.c +DISCARD_DSRCS = ../dev/devide_discard.c ../dev/devsd_discard.c +DSRCS = ../dev/devide.c ../dev/mbr.c ../dev/blkdev.c ../dev/devsd.c NSRCS = AOBJS = $(ASRCS:.s=.rel) @@ -48,3 +48,5 @@ loader.bin: loader.s sdldz80 -i loader.rel makebin -s 65536 loader.ihx loader.tmp dd if=loader.tmp bs=256 skip=208 of=loader.bin + +piospi.rel: ../dev/z80softspi.s diff --git a/Kernel/platform-linc80/config.h b/Kernel/platform-linc80/config.h index fa23cee1..15e3fbe6 100644 --- a/Kernel/platform-linc80/config.h +++ b/Kernel/platform-linc80/config.h @@ -52,10 +52,13 @@ extern unsigned int swap_dev; #define NBUFS 4 /* Number of block buffers, keep in line with space reserved in zeta-v2.s */ #define NMOUNTS 2 /* Number of mounts at a time */ -#define MAX_BLKDEV 1 /* 1 IDE for now */ +#define MAX_BLKDEV 3 /* 3 IDE + 2 x SD for now */ /* IDE/CF support */ #define CONFIG_IDE +#define CONFIG_SD + +#define SD_DRIVE_COUNT 2 /* Device parameters */ #define NUM_DEV_TTY 2 @@ -67,3 +70,5 @@ extern unsigned int swap_dev; #define TTYDEV BOOT_TTY /* Device used by kernel for messages, panics */ #define platform_copyright() + +#define SD_SPI_CALLTYPE __z88dk_fastcall diff --git a/Kernel/platform-linc80/discard.c b/Kernel/platform-linc80/discard.c index 3b5281fe..0b0ccd86 100644 --- a/Kernel/platform-linc80/discard.c +++ b/Kernel/platform-linc80/discard.c @@ -2,11 +2,13 @@ #include #include #include -#include #include +#include #include #include "config.h" +extern void pio_setup(void); + void map_init(void) { } @@ -34,7 +36,11 @@ void platform_swap_found(uint8_t letter, uint8_t m) void device_init(void) { + pio_setup(); #ifdef CONFIG_IDE devide_init(); #endif +#ifdef CONFIG_SD + devsd_init(); +#endif } diff --git a/Kernel/platform-linc80/fuzix.lnk b/Kernel/platform-linc80/fuzix.lnk index 4c22ca57..67cca019 100644 --- a/Kernel/platform-linc80/fuzix.lnk +++ b/Kernel/platform-linc80/fuzix.lnk @@ -37,4 +37,8 @@ platform-linc80/mbr.rel platform-linc80/blkdev.rel platform-linc80/devide.rel platform-linc80/devide_discard.rel +platform-linc80/devsd.rel +platform-linc80/devsd_discard.rel +platform-linc80/sd.rel +platform-linc80/piospi.rel -e diff --git a/Kernel/platform-linc80/kernel.def b/Kernel/platform-linc80/kernel.def index c4764f7a..636b59fa 100644 --- a/Kernel/platform-linc80/kernel.def +++ b/Kernel/platform-linc80/kernel.def @@ -30,3 +30,5 @@ CTC_CH3 .equ 0x0B ; CTC channel 3 NBUFS .equ 4 +SPI_DATA .equ 0x04 +SPI_CLOCK .equ 0x02 -- 2.34.1