1
0
Fork 0
forked from len0rd/rockbox

Added plugin support for 8MB-modified units. This bumps the plugin API version number again.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@3831 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Björn Stenberg 2003-07-13 22:15:19 +00:00
parent 9cb5e0e9f9
commit 13d56150b6
5 changed files with 26 additions and 9 deletions

View file

@ -74,7 +74,7 @@ endif
all : $(OBJDIR)/$(OUTNAME) rocks
rocks:
$(MAKE) -C plugins TARGET=$(TARGET) DEBUG=$(DEBUG) OBJDIR=$(OBJDIR) VERSION=$(VERSION) EXTRA_DEFINES="$(EXTRA_DEFINES)"
$(MAKE) -C plugins TARGET=$(TARGET) DEBUG=$(DEBUG) OBJDIR=$(OBJDIR) VERSION=$(VERSION) EXTRA_DEFINES="$(EXTRA_DEFINES)" MEM=${MEM}
$(OBJDIR)/librockbox.a:
make -C $(FIRMWARE) TARGET=$(TARGET) DEBUG=$(DEBUG) OBJDIR=$(OBJDIR)

View file

@ -49,7 +49,7 @@
#define PREFIX(_x_) _x_
#endif
static int plugin_test(int api_version, int model);
static int plugin_test(int api_version, int model, int memsize);
static struct plugin_api rockbox_api = {
PLUGIN_API_VERSION,
@ -230,7 +230,7 @@ int plugin_load(char* plugin, void* parameter)
return PLUGIN_OK;
}
int plugin_test(int api_version, int model)
int plugin_test(int api_version, int model, int memsize)
{
if (api_version != PLUGIN_API_VERSION)
return PLUGIN_WRONG_API_VERSION;
@ -238,5 +238,8 @@ int plugin_test(int api_version, int model)
if (model != MODEL)
return PLUGIN_WRONG_MODEL;
if (memsize != MEM)
return PLUGIN_WRONG_MODEL;
return PLUGIN_OK;
}

View file

@ -25,6 +25,10 @@
#define NO_REDEFINES_PLEASE
#endif
#ifndef MEM
#define MEM 2
#endif
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
@ -37,7 +41,7 @@
#include "lcd.h"
/* increase this every time the api struct changes */
#define PLUGIN_API_VERSION 3
#define PLUGIN_API_VERSION 4
/* plugin return codes */
enum plugin_status {
@ -64,7 +68,7 @@ enum model {
/* compatibility test macro */
#define TEST_PLUGIN_API(_api_) \
do { \
int _rc_ = _api_->plugin_test(PLUGIN_API_VERSION, MODEL); \
int _rc_ = _api_->plugin_test(PLUGIN_API_VERSION, MODEL, MEM); \
if (_rc_<0) \
return _rc_; \
} while(0)
@ -73,7 +77,7 @@ struct plugin_api {
/* these two fields must always be first, to ensure
TEST_PLUGIN_API will always work */
int version;
int (*plugin_test)(int api_version, int model);
int (*plugin_test)(int api_version, int model, int memsize);
/* lcd */
void (*lcd_clear_display)(void);

View file

@ -13,9 +13,10 @@ OC = sh-elf-objcopy
FIRMWARE = ../../firmware
INCLUDES = -I$(FIRMWARE)/include -I$(FIRMWARE)/export -I$(FIRMWARE)/common -I$(FIRMWARE)/drivers -I..
CFLAGS = -O -W -Wall -m1 -nostdlib -ffreestanding -Wstrict-prototypes $(INCLUDES) $(TARGET) $(EXTRA_DEFINES)
CFLAGS = -O -W -Wall -m1 -nostdlib -ffreestanding -Wstrict-prototypes $(INCLUDES) $(TARGET) $(EXTRA_DEFINES) -DMEM=${MEM}
LINKFILE = plugin.lds
LDS := plugin.lds
LINKFILE := $(OBJDIR)/pluginlink.lds
SRC := $(wildcard *.c)
ROCKS := $(SRC:%.c=$(OBJDIR)/%.rock)
@ -41,5 +42,10 @@ $(OBJDIR)/%.o: %.c ../plugin.h Makefile
all: $(ROCKS)
@echo done
# MEM should be passed on to this makefile with the chosen memory size given
# in number of MB
$(LINKFILE): $(LDS)
cat $< | $(CC) -DMEMORYSIZE=$(MEM) $(DEFINES) -E -P - >$@
clean:
-rm -f $(ROCKS)

View file

@ -1,8 +1,12 @@
OUTPUT_FORMAT(elf32-sh)
#define PLUGIN_LENGTH 0x8000
#define DRAMSIZE (MEMORYSIZE * 0x100000) - PLUGIN_LENGTH
#define PLUGIN_ORIGIN (0x09000000 + (DRAMSIZE))
MEMORY
{
PLUGIN_RAM : ORIGIN = 0x091f8000, LENGTH = 0x8000
PLUGIN_RAM : ORIGIN = PLUGIN_ORIGIN, LENGTH = PLUGIN_LENGTH
}
SECTIONS