diff --git a/drivers/bch/Kconfig b/drivers/bch/Kconfig index 38a36e54d6c..cdf70d59ae2 100644 --- a/drivers/bch/Kconfig +++ b/drivers/bch/Kconfig @@ -24,4 +24,8 @@ config BCH_ENCRYPTION_KEY_SIZE default 16 depends on BCH_ENCRYPTION +config BCH_BUFFER_ALIGNMENT + int "Buffer aligned bytes" + default 0 + endif # BCH diff --git a/drivers/bch/bchlib_setup.c b/drivers/bch/bchlib_setup.c index d51dfebd1b4..9c57c2021fc 100644 --- a/drivers/bch/bchlib_setup.c +++ b/drivers/bch/bchlib_setup.c @@ -112,7 +112,11 @@ int bchlib_setup(const char *blkdev, bool readonly, FAR void **handle) /* Allocate the sector I/O buffer */ - bch->buffer = (FAR uint8_t *)kmm_malloc(bch->sectsize); +#if CONFIG_BCH_BUFFER_ALIGNMENT != 0 + bch->buffer = kmm_memalign(CONFIG_BCH_BUFFER_ALIGNMENT, bch->sectsize); +#else + bch->buffer = kmm_malloc(bch->sectsize); +#endif if (!bch->buffer) { ferr("ERROR: Failed to allocate sector buffer\n");