diff options
author | Brandon Bayer <bbayer@multitech.com> | 2016-09-08 12:52:10 -0500 |
---|---|---|
committer | Brandon Bayer <bbayer@multitech.com> | 2016-09-08 12:52:10 -0500 |
commit | f85e518970c3fec481ce59aabf91f097466ef40c (patch) | |
tree | 2d420a72393b581710061a351e7812042e7dcb9f /io-module/mts_io.c | |
parent | c9c2b06e69ebb8a36d660f2174fef87aed09324c (diff) | |
parent | 672a21b3815cb6ebafa636067b5fd0bc9fd9460a (diff) | |
download | mts-io-f85e518970c3fec481ce59aabf91f097466ef40c.tar.gz mts-io-f85e518970c3fec481ce59aabf91f097466ef40c.tar.bz2 mts-io-f85e518970c3fec481ce59aabf91f097466ef40c.zip |
Merge branch 'dev-mtp' into 'internal-dev'
1.2.0
Fix build issues in case NUM_AP is 0.
See merge request !1
Diffstat (limited to 'io-module/mts_io.c')
-rw-r--r-- | io-module/mts_io.c | 93 |
1 files changed, 49 insertions, 44 deletions
diff --git a/io-module/mts_io.c b/io-module/mts_io.c index 2454821..deb2d92 100644 --- a/io-module/mts_io.c +++ b/io-module/mts_io.c @@ -74,18 +74,6 @@ static struct mts_id_eeprom_layout id_eeprom; #define NUM_AP 0 #endif -#if NUM_AP > 0 -/* accessory card EEPROMs */ -extern uint8_t mts_ap_eeprom[NUM_AP][512]; -static struct mts_ap_eeprom_layout ap_eeprom[NUM_AP]; -/* kobject pointers for the apX subdirectories that correspond to the accessory ports */ -static struct kobject *ap_subdirs[NUM_AP]; -/* attribute groups for the accessory ports*/ -static struct attribute_group ap_attr_groups[NUM_AP]; -#endif - -static struct ap_info* port_info[NUM_AP]; - static struct platform_device *mts_io_platform_device; static struct attribute_group *attr_group; static struct gpio_pin *gpio_pins; @@ -100,20 +88,13 @@ static struct timer_list radio_reset_timer; static volatile int radio_reset_timer_is_start = 0; static struct timer_list radio_reset_available_timer; static volatile int radio_reset_available_timer_is_start = 0; -static time_t time_now_secs(); +static time_t time_now_secs(void); static void radio_reset_available_timer_callback(unsigned long data); static void radio_reset_timer_callback(unsigned long data); /* generic GPIO support */ #include "gpio.c" -/* accessory card support */ -#include "mtac.c" -#include "mtac_gpiob.c" -#include "mtac_mfser.c" -#include "mtac_eth.c" -#include "mtac_lora.c" - /* reset button handling */ #define RESET_CHECK_PER_SEC 8 #define RESET_INTERVAL (HZ / RESET_CHECK_PER_SEC) @@ -333,7 +314,7 @@ static DEVICE_ATTR_MTS(dev_attr_radio_power, "radio-power", mts_attr_show_gpio_pin, mts_attr_store_gpio_pin); /* backoff-timers */ -static time_t time_now_secs() +static time_t time_now_secs(void) { struct timespec ts = current_kernel_time(); return ts.tv_sec; @@ -457,7 +438,6 @@ static ssize_t mts_attr_store_radio_reset_backoffs_index(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { int value; - int err; if (sscanf(buf, "%d", &value) != 1) { return -EINVAL; @@ -644,6 +624,25 @@ static DEVICE_ATTR_RO_MTS(dev_attr_eth_mac, "mac-eth", /* include per-device pins and attributes */ #include "mtcdt.c" +#if NUM_AP > 0 + +/* accessory card EEPROMs */ +extern uint8_t mts_ap_eeprom[NUM_AP][512]; +static struct mts_ap_eeprom_layout ap_eeprom[NUM_AP]; +/* kobject pointers for the apX subdirectories that correspond to the accessory ports */ +static struct kobject *ap_subdirs[NUM_AP]; +/* attribute groups for the accessory ports*/ +static struct attribute_group ap_attr_groups[NUM_AP]; +/* info for accessory port (contains function pointers for setup and teardown and and useful info) */ +static struct ap_info* port_info[NUM_AP]; + +/* accessory card support */ +#include "mtac.c" +#include "mtac_gpiob.c" +#include "mtac_mfser.c" +#include "mtac_eth.c" +#include "mtac_lora.c" + static bool load_port(int port) { int port_index = port - 1; memcpy(&ap_eeprom[port_index], mts_ap_eeprom[port_index], sizeof(mts_ap_eeprom[port_index])); @@ -727,14 +726,32 @@ static bool load_port(int port) { static void init_accessory_ports(void) { - int i; - for (i = 1; i <= NUM_AP; i++) { - if (! load_port(i)) { - log_error("failed to load accessory card in port %d", i); - } - } + int port_index; + + for (port_index = 0; port_index < NUM_AP; port_index++) { + port_info[port_index] = NULL; + if (! load_port(port_index+1)) { + log_error("failed to load accessory card in port %d", port_index); + } + } } +static void teardown_accessory_ports(void) +{ + int port_index; + + for (port_index = 0; port_index < NUM_AP; port_index++) { + if (port_info[port_index]) { + port_info[port_index]->teardown(port_index+1); + kfree(port_info[port_index]); + } + } +} +#else /* NUM_AP > 0 */ +static void init_accessory_ports(void) {} +static void teardown_accessory_ports(void) {} +#endif + static int mts_id_eeprom_load(void) { int i; @@ -809,19 +826,13 @@ static int mts_id_eeprom_load(void) static void cleanup(void) { - int port; - int port_index; - log_info("cleaning up...."); if (mts_io_platform_device) { platform_device_unregister(mts_io_platform_device); } - for (port_index = 0, port = 1; port_index < NUM_AP; port_index++, port++) { - if (port_info[port_index]) { - port_info[port_index]->teardown(port); - kfree(port_info[port_index]); - } - } + + teardown_accessory_ports(); + log_info("done cleaning up...."); } @@ -829,7 +840,6 @@ static int __init mts_io_init(void) { struct gpio_pin *pin; int ret; - int port_index; log_info("init: " DRIVER_VERSION); @@ -851,12 +861,7 @@ static int __init mts_io_init(void) return ret; } - if (NUM_AP) { - for (port_index = 0; port_index < NUM_AP; port_index++) { - port_info[port_index] = NULL; - } - init_accessory_ports(); - } + init_accessory_ports(); ret = sysfs_create_group(&mts_io_platform_device->dev.kobj, attr_group); if (ret) { |