From 2b23d3ecaf2074ad640f66ff198b6043f3ea9e6e Mon Sep 17 00:00:00 2001 From: Aidan MacDonald Date: Sat, 5 Jun 2021 11:58:17 +0100 Subject: x1000: Allow setting IRQ handlers dynamically Avoids having to #define the names of GPIO pin interrupt handlers, as they can now be set at runtime instead. Change-Id: Ib5da1bdb475ff7b64280fe7cdd00adab63389152 --- firmware/target/mips/ingenic_x1000/msc-x1000.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'firmware/target/mips/ingenic_x1000/msc-x1000.c') diff --git a/firmware/target/mips/ingenic_x1000/msc-x1000.c b/firmware/target/mips/ingenic_x1000/msc-x1000.c index 92b3d4206a..27929cced5 100644 --- a/firmware/target/mips/ingenic_x1000/msc-x1000.c +++ b/firmware/target/mips/ingenic_x1000/msc-x1000.c @@ -42,7 +42,6 @@ static const msc_config msc_configs[] = { #ifdef FIIO_M3K #define MSC_CLOCK_SOURCE X1000_CLK_SCLK_A -#define msc0_cd_interrupt GPIOB06 { .msc_nr = 0, .msc_type = MSC_TYPE_SD, @@ -67,6 +66,9 @@ static const msc_config* msc_lookup_config(int msc) static msc_drv msc_drivers[MSC_COUNT]; +static void msc0_cd_interrupt(void); +static void msc1_cd_interrupt(void); + /* --------------------------------------------------------------------------- * Initialization */ @@ -123,6 +125,8 @@ static void msc_init_one(msc_drv* d, int msc) if(gpio_get_level(d->config->cd_gpio) != d->config->cd_active_level) d->card_present = 0; + system_set_irq_handler(GPIO_TO_IRQ(d->config->cd_gpio), + msc == 0 ? msc0_cd_interrupt : msc1_cd_interrupt); gpio_set_function(d->config->cd_gpio, GPIOF_IRQ_EDGE(1)); gpio_flip_edge_irq(d->config->cd_gpio); gpio_enable_irq(d->config->cd_gpio); @@ -647,19 +651,15 @@ void MSC1(void) msc_interrupt(&msc_drivers[1]); } -#ifdef msc0_cd_interrupt -void msc0_cd_interrupt(void) +static void msc0_cd_interrupt(void) { msc_cd_interrupt(&msc_drivers[0]); } -#endif -#ifdef msc1_cd_interrupt -void msc1_cd_interrupt(void) +static void msc1_cd_interrupt(void) { msc_cd_interrupt(&msc_drivers[1]); } -#endif /* --------------------------------------------------------------------------- * SD command helpers -- cgit v1.2.3