From 435e08eae1502f520ce14b279cd2754093e195cb Mon Sep 17 00:00:00 2001 From: Rafaël Carré Date: Thu, 27 May 2010 12:00:29 +0000 Subject: mark some functions as init functions (discarded after init() has run) tick_start, fmradio_i2c_init, pcm_init, pcm_postinit, pcm_play_dma_init Also add some as3525 target specific functions Make as3525v2 use this attribute git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26328 a1c6a512-1295-4272-9138-f99709370657 --- firmware/export/config.h | 2 +- firmware/export/fmradio_i2c.h | 3 ++- firmware/export/kernel.h | 2 +- firmware/export/pcm.h | 6 +++--- firmware/target/arm/as3525/ascodec-target.h | 2 +- firmware/target/arm/as3525/dma-target.h | 3 ++- 6 files changed, 10 insertions(+), 8 deletions(-) (limited to 'firmware') diff --git a/firmware/export/config.h b/firmware/export/config.h index 38eb696515..0ed1be4157 100644 --- a/firmware/export/config.h +++ b/firmware/export/config.h @@ -753,7 +753,7 @@ Lyre prototype 1 */ #define IBSS_ATTR #define STATICIRAM static #endif -#if (defined(CPU_PP) || (CONFIG_CPU == AS3525)) \ +#if (defined(CPU_PP) || (CONFIG_CPU == AS3525) || (CONFIG_CPU == AS3525v2)) \ && !defined(SIMULATOR) && !defined(BOOTLOADER) /* Functions that have INIT_ATTR attached are NOT guaranteed to survive after * root_menu() has been called. Their code may be overwritten by other data or diff --git a/firmware/export/fmradio_i2c.h b/firmware/export/fmradio_i2c.h index 0dc3889b08..f8f6e4f646 100644 --- a/firmware/export/fmradio_i2c.h +++ b/firmware/export/fmradio_i2c.h @@ -22,9 +22,10 @@ #ifndef FMRADIO_I2C_H #define FMRADIO_I2C_H +#include "config.h" /* for INIT_ATTR */ #include -void fmradio_i2c_init(void); +void fmradio_i2c_init(void) INIT_ATTR; void fmradio_i2c_enable(bool enable); int fmradio_i2c_write(unsigned char address, const unsigned char* buf, int count); int fmradio_i2c_read(unsigned char address, unsigned char* buf, int count); diff --git a/firmware/export/kernel.h b/firmware/export/kernel.h index a4761302e0..bcf51c1723 100644 --- a/firmware/export/kernel.h +++ b/firmware/export/kernel.h @@ -211,7 +211,7 @@ extern void yield(void); extern void sleep(int ticks); int tick_add_task(void (*f)(void)); int tick_remove_task(void (*f)(void)); -extern void tick_start(unsigned int interval_in_ms); +extern void tick_start(unsigned int interval_in_ms) INIT_ATTR; #ifdef INCLUDE_TIMEOUT_API struct timeout; diff --git a/firmware/export/pcm.h b/firmware/export/pcm.h index 40bfe6fa46..304f120059 100644 --- a/firmware/export/pcm.h +++ b/firmware/export/pcm.h @@ -67,8 +67,8 @@ void pcm_apply_settings(void); void pcm_play_lock(void); void pcm_play_unlock(void); -void pcm_init(void); -void pcm_postinit(void); +void pcm_init(void) INIT_ATTR; +void pcm_postinit(void) INIT_ATTR; /* This is for playing "raw" PCM data */ void pcm_play_data(pcm_play_callback_type get_more, @@ -104,7 +104,7 @@ extern volatile bool pcm_paused; void pcm_play_dma_lock(void); void pcm_play_dma_unlock(void); -void pcm_play_dma_init(void); +void pcm_play_dma_init(void) INIT_ATTR; void pcm_play_dma_start(const void *addr, size_t size); void pcm_play_dma_stop(void); void pcm_play_dma_pause(bool pause); diff --git a/firmware/target/arm/as3525/ascodec-target.h b/firmware/target/arm/as3525/ascodec-target.h index d3d095c365..a92fea9f61 100644 --- a/firmware/target/arm/as3525/ascodec-target.h +++ b/firmware/target/arm/as3525/ascodec-target.h @@ -70,7 +70,7 @@ struct ascodec_request { struct ascodec_request *next; }; -void ascodec_init(void); +void ascodec_init(void) INIT_ATTR; int ascodec_write(unsigned int index, unsigned int value); diff --git a/firmware/target/arm/as3525/dma-target.h b/firmware/target/arm/as3525/dma-target.h index 00897fa070..a64055984d 100644 --- a/firmware/target/arm/as3525/dma-target.h +++ b/firmware/target/arm/as3525/dma-target.h @@ -19,6 +19,7 @@ * ****************************************************************************/ +#include "config.h" /* for INIT_ATTR */ #include #include @@ -32,7 +33,7 @@ #define DMA_PERI_SD 5 /* embedded storage */ #define DMA_PERI_DBOP 8 -void dma_init(void); +void dma_init(void) INIT_ATTR; void dma_enable_channel(int channel, void *src, void *dst, int peri, int flow_controller, bool src_inc, bool dst_inc, size_t size, int nwords, void (*callback)(void)); -- cgit v1.2.3