sigmadsp-regmap.c (1573B)
1// SPDX-License-Identifier: GPL-2.0-or-later 2/* 3 * Load Analog Devices SigmaStudio firmware files 4 * 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 instance 30 * @dev: The parent device 31 * @regmap: Regmap instance to use 32 * @ops: The sigmadsp_ops to use for this instance 33 * @firmware_name: Name of the firmware file to load 34 * 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");