mtd: switch to c++ and use px4_find_spi_bus

This commit is contained in:
Beat Küng 2020-02-18 17:11:27 +01:00 committed by Daniel Agar
parent f555fe309c
commit 971897b9ed
2 changed files with 21 additions and 20 deletions

View File

@ -35,7 +35,7 @@ px4_add_module(
MAIN mtd MAIN mtd
COMPILE_FLAGS COMPILE_FLAGS
SRCS SRCS
mtd.c mtd.cpp
24xxxx_mtd.c 24xxxx_mtd.c
DEPENDS DEPENDS
) )

View File

@ -42,6 +42,7 @@
#include <px4_platform_common/px4_config.h> #include <px4_platform_common/px4_config.h>
#include <px4_platform_common/log.h> #include <px4_platform_common/log.h>
#include <px4_platform_common/module.h> #include <px4_platform_common/module.h>
#include <px4_platform_common/spi.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
@ -66,7 +67,7 @@
#include <board_config.h> #include <board_config.h>
__EXPORT int mtd_main(int argc, char *argv[]); extern "C" __EXPORT int mtd_main(int argc, char *argv[]);
#ifndef CONFIG_MTD #ifndef CONFIG_MTD
@ -101,10 +102,10 @@ static int ramtron_attach(void);
static int at24xxx_attach(void); static int at24xxx_attach(void);
#endif #endif
static int mtd_start(char *partition_names[], unsigned n_partitions); static int mtd_start(const char *partition_names[], unsigned n_partitions);
static int mtd_erase(char *partition_names[], unsigned n_partitions); static int mtd_erase(const char *partition_names[], unsigned n_partitions);
static int mtd_readtest(char *partition_names[], unsigned n_partitions); static int mtd_readtest(const char *partition_names[], unsigned n_partitions);
static int mtd_rwtest(char *partition_names[], unsigned n_partitions); static int mtd_rwtest(const char *partition_names[], unsigned n_partitions);
static int mtd_print_info(void); static int mtd_print_info(void);
static int mtd_get_geometry(unsigned long *blocksize, unsigned long *erasesize, unsigned long *neraseblocks, static int mtd_get_geometry(unsigned long *blocksize, unsigned long *erasesize, unsigned long *neraseblocks,
unsigned *blkpererase, unsigned *nblocks, unsigned *partsize, unsigned n_partitions); unsigned *blkpererase, unsigned *nblocks, unsigned *partsize, unsigned n_partitions);
@ -115,7 +116,7 @@ static struct mtd_dev_s *mtd_dev;
static unsigned n_partitions_current = 0; static unsigned n_partitions_current = 0;
/* note, these will be equally sized */ /* note, these will be equally sized */
static char *partition_names_default[] = MTD_PARTITION_TABLE; static const char *partition_names_default[] = MTD_PARTITION_TABLE;
static const int n_partitions_default = arraySize(partition_names_default); static const int n_partitions_default = arraySize(partition_names_default);
static int static int
@ -153,7 +154,7 @@ int mtd_main(int argc, char *argv[])
/* start mapping according to user request */ /* start mapping according to user request */
if (argc >= 3) { if (argc >= 3) {
return mtd_start(argv + 2, argc - 2); return mtd_start((const char **)(argv + 2), argc - 2);
} else { } else {
return mtd_start(partition_names_default, n_partitions_default); return mtd_start(partition_names_default, n_partitions_default);
@ -162,7 +163,7 @@ int mtd_main(int argc, char *argv[])
if (!strcmp(argv[1], "readtest")) { if (!strcmp(argv[1], "readtest")) {
if (argc >= 3) { if (argc >= 3) {
return mtd_readtest(argv + 2, argc - 2); return mtd_readtest((const char **)(argv + 2), argc - 2);
} else { } else {
return mtd_readtest(partition_names_default, n_partitions_default); return mtd_readtest(partition_names_default, n_partitions_default);
@ -171,7 +172,7 @@ int mtd_main(int argc, char *argv[])
if (!strcmp(argv[1], "rwtest")) { if (!strcmp(argv[1], "rwtest")) {
if (argc >= 3) { if (argc >= 3) {
return mtd_rwtest(argv + 2, argc - 2); return mtd_rwtest((const char **)(argv + 2), argc - 2);
} else { } else {
return mtd_rwtest(partition_names_default, n_partitions_default); return mtd_rwtest(partition_names_default, n_partitions_default);
@ -184,7 +185,7 @@ int mtd_main(int argc, char *argv[])
if (!strcmp(argv[1], "erase")) { if (!strcmp(argv[1], "erase")) {
if (argc >= 3) { if (argc >= 3) {
return mtd_erase(argv + 2, argc - 2); return mtd_erase((const char **)(argv + 2), argc - 2);
} else { } else {
return mtd_erase(partition_names_default, n_partitions_default); return mtd_erase(partition_names_default, n_partitions_default);
@ -205,9 +206,9 @@ static int
ramtron_attach(void) ramtron_attach(void)
{ {
/* initialize the right spi */ /* initialize the right spi */
struct spi_dev_s *spi = px4_spibus_initialize(PX4_SPI_BUS_RAMTRON); struct spi_dev_s *spi = px4_spibus_initialize(px4_find_spi_bus(SPIDEV_FLASH(0)));
if (spi == NULL) { if (spi == nullptr) {
PX4_ERR("failed to locate spi bus"); PX4_ERR("failed to locate spi bus");
return 1; return 1;
} }
@ -234,7 +235,7 @@ ramtron_attach(void)
} }
/* if last attempt is still unsuccessful, abort */ /* if last attempt is still unsuccessful, abort */
if (mtd_dev == NULL) { if (mtd_dev == nullptr) {
PX4_ERR("failed to initialize mtd driver"); PX4_ERR("failed to initialize mtd driver");
return 1; return 1;
} }
@ -259,7 +260,7 @@ at24xxx_attach(void)
/* find the right I2C */ /* find the right I2C */
struct i2c_master_s *i2c = px4_i2cbus_initialize(PX4_I2C_BUS_MTD); struct i2c_master_s *i2c = px4_i2cbus_initialize(PX4_I2C_BUS_MTD);
if (i2c == NULL) { if (i2c == nullptr) {
PX4_ERR("failed to locate I2C bus"); PX4_ERR("failed to locate I2C bus");
return 1; return 1;
} }
@ -279,7 +280,7 @@ at24xxx_attach(void)
} }
/* if last attempt is still unsuccessful, abort */ /* if last attempt is still unsuccessful, abort */
if (mtd_dev == NULL) { if (mtd_dev == nullptr) {
PX4_ERR("failed to initialize EEPROM driver"); PX4_ERR("failed to initialize EEPROM driver");
return 1; return 1;
} }
@ -290,7 +291,7 @@ at24xxx_attach(void)
#endif #endif
static int static int
mtd_start(char *partition_names[], unsigned n_partitions) mtd_start(const char *partition_names[], unsigned n_partitions)
{ {
int ret; int ret;
@ -450,7 +451,7 @@ int mtd_print_info(void)
} }
int int
mtd_erase(char *partition_names[], unsigned n_partitions) mtd_erase(const char *partition_names[], unsigned n_partitions)
{ {
uint8_t v[64]; uint8_t v[64];
memset(v, 0xFF, sizeof(v)); memset(v, 0xFF, sizeof(v));
@ -482,7 +483,7 @@ mtd_erase(char *partition_names[], unsigned n_partitions)
bad reads (the ramtron driver does return an error) bad reads (the ramtron driver does return an error)
*/ */
int int
mtd_readtest(char *partition_names[], unsigned n_partitions) mtd_readtest(const char *partition_names[], unsigned n_partitions)
{ {
ssize_t expected_size = mtd_get_partition_size(); ssize_t expected_size = mtd_get_partition_size();
@ -525,7 +526,7 @@ mtd_readtest(char *partition_names[], unsigned n_partitions)
data isn't the same data isn't the same
*/ */
int int
mtd_rwtest(char *partition_names[], unsigned n_partitions) mtd_rwtest(const char *partition_names[], unsigned n_partitions)
{ {
ssize_t expected_size = mtd_get_partition_size(); ssize_t expected_size = mtd_get_partition_size();