brintos

brintos / linux-shallow public Read only

0
0
Text · 1.5 KiB · ba9a679 Raw
60 lines · c
1// SPDX-License-Identifier: GPL-2.0-or-later2/*3 * Load Analog Devices SigmaStudio firmware files4 *5 * Copyright 2009-2011 Analog Devices Inc.6 */7 8#include <linux/regmap.h>9#include <linux/export.h>10#include <linux/module.h>11 12#include "sigmadsp.h"13 14static int sigmadsp_write_regmap(void *control_data,15	unsigned int addr, const uint8_t data[], size_t len)16{17	return regmap_raw_write(control_data, addr,18		data, len);19}20 21static int sigmadsp_read_regmap(void *control_data,22	unsigned int addr, uint8_t data[], size_t len)23{24	return regmap_raw_read(control_data, addr,25		data, len);26}27 28/**29 * devm_sigmadsp_init_regmap() - Initialize SigmaDSP instance30 * @dev: The parent device31 * @regmap: Regmap instance to use32 * @ops: The sigmadsp_ops to use for this instance33 * @firmware_name: Name of the firmware file to load34 *35 * Allocates a SigmaDSP instance and loads the specified firmware file.36 *37 * Returns a pointer to a struct sigmadsp on success, or a PTR_ERR() on error.38 */39struct sigmadsp *devm_sigmadsp_init_regmap(struct device *dev,40	struct regmap *regmap, const struct sigmadsp_ops *ops,41	const char *firmware_name)42{43	struct sigmadsp *sigmadsp;44 45	sigmadsp = devm_sigmadsp_init(dev, ops, firmware_name);46	if (IS_ERR(sigmadsp))47		return sigmadsp;48 49	sigmadsp->control_data = regmap;50	sigmadsp->write = sigmadsp_write_regmap;51	sigmadsp->read = sigmadsp_read_regmap;52 53	return sigmadsp;54}55EXPORT_SYMBOL_GPL(devm_sigmadsp_init_regmap);56 57MODULE_AUTHOR("Lars-Peter Clausen <lars@metafoo.de>");58MODULE_DESCRIPTION("SigmaDSP regmap firmware loader");59MODULE_LICENSE("GPL");60