forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
1.5 KiB
59 lines
1.5 KiB
// SPDX-License-Identifier: GPL-2.0-or-later |
|
/* |
|
* Load Analog Devices SigmaStudio firmware files |
|
* |
|
* Copyright 2009-2011 Analog Devices Inc. |
|
*/ |
|
|
|
#include <linux/regmap.h> |
|
#include <linux/export.h> |
|
#include <linux/module.h> |
|
|
|
#include "sigmadsp.h" |
|
|
|
static int sigmadsp_write_regmap(void *control_data, |
|
unsigned int addr, const uint8_t data[], size_t len) |
|
{ |
|
return regmap_raw_write(control_data, addr, |
|
data, len); |
|
} |
|
|
|
static int sigmadsp_read_regmap(void *control_data, |
|
unsigned int addr, uint8_t data[], size_t len) |
|
{ |
|
return regmap_raw_read(control_data, addr, |
|
data, len); |
|
} |
|
|
|
/** |
|
* devm_sigmadsp_init_regmap() - Initialize SigmaDSP instance |
|
* @dev: The parent device |
|
* @regmap: Regmap instance to use |
|
* @ops: The sigmadsp_ops to use for this instance |
|
* @firmware_name: Name of the firmware file to load |
|
* |
|
* Allocates a SigmaDSP instance and loads the specified firmware file. |
|
* |
|
* Returns a pointer to a struct sigmadsp on success, or a PTR_ERR() on error. |
|
*/ |
|
struct sigmadsp *devm_sigmadsp_init_regmap(struct device *dev, |
|
struct regmap *regmap, const struct sigmadsp_ops *ops, |
|
const char *firmware_name) |
|
{ |
|
struct sigmadsp *sigmadsp; |
|
|
|
sigmadsp = devm_sigmadsp_init(dev, ops, firmware_name); |
|
if (IS_ERR(sigmadsp)) |
|
return sigmadsp; |
|
|
|
sigmadsp->control_data = regmap; |
|
sigmadsp->write = sigmadsp_write_regmap; |
|
sigmadsp->read = sigmadsp_read_regmap; |
|
|
|
return sigmadsp; |
|
} |
|
EXPORT_SYMBOL_GPL(devm_sigmadsp_init_regmap); |
|
|
|
MODULE_AUTHOR("Lars-Peter Clausen <[email protected]>"); |
|
MODULE_DESCRIPTION("SigmaDSP regmap firmware loader"); |
|
MODULE_LICENSE("GPL");
|
|
|