* [PATCH v1 0/2 RESEND] ASoC: codecs: Add support for Fortemedia FM34NE DSP
@ 2026-10-13 18:47 Svyatoslav Ryhel
2026-10-13 18:47 ` [PATCH v1 1/2 RESEND] ASoC: dt-bindings: Document " Svyatoslav Ryhel
` (2 more replies)
0 siblings, 3 replies; 9+ messages in thread
From: Svyatoslav Ryhel @ 2026-10-13 18:47 UTC (permalink / raw)
To: Liam Girdwood, Mark Brown, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Jaroslav Kysela, Takashi Iwai, Svyatoslav Ryhel
Cc: linux-sound, devicetree, linux-kernel
The Fortemedia FM34NE is digital sound processing chip used for
active noise suppression mainly on ASUS Transformers.
Resending since previous attempt seems to be malformed.
Svyatoslav Ryhel (2):
ASoC: dt-bindings: Document FM34NE DSP
ASoC: codecs: Add support for Fortemedia FM34NE DSP
.../bindings/sound/asus,tf201-dsp.yaml | 80 ++
sound/soc/codecs/Kconfig | 12 +
sound/soc/codecs/Makefile | 2 +
sound/soc/codecs/fm34ne-dsp.c | 388 +++++++
sound/soc/codecs/fm34ne-dsp.h | 1030 +++++++++++++++++
5 files changed, 1512 insertions(+)
create mode 100644 Documentation/devicetree/bindings/sound/asus,tf201-dsp.yaml
create mode 100644 sound/soc/codecs/fm34ne-dsp.c
create mode 100644 sound/soc/codecs/fm34ne-dsp.h
--
2.53.0
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH v1 1/2 RESEND] ASoC: dt-bindings: Document FM34NE DSP
2026-10-13 18:47 [PATCH v1 0/2 RESEND] ASoC: codecs: Add support for Fortemedia FM34NE DSP Svyatoslav Ryhel
@ 2026-10-13 18:47 ` Svyatoslav Ryhel
2026-10-13 18:56 ` sashiko-bot
2026-10-13 18:47 ` [PATCH v1 2/2 RESEND] ASoC: codecs: Add support for Fortemedia " Svyatoslav Ryhel
2026-10-13 18:49 ` [PATCH v1 0/2 " Mark Brown
2 siblings, 1 reply; 9+ messages in thread
From: Svyatoslav Ryhel @ 2026-10-13 18:47 UTC (permalink / raw)
To: Liam Girdwood, Mark Brown, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Jaroslav Kysela, Takashi Iwai, Svyatoslav Ryhel
Cc: linux-sound, devicetree, linux-kernel
Document the FM34NE DSP based voice processor used in the ASUS Transformer
devices.
Signed-off-by: Svyatoslav Ryhel <clamor95@gmail.com>
---
.../bindings/sound/asus,tf201-dsp.yaml | 80 +++++++++++++++++++
1 file changed, 80 insertions(+)
create mode 100644 Documentation/devicetree/bindings/sound/asus,tf201-dsp.yaml
diff --git a/Documentation/devicetree/bindings/sound/asus,tf201-dsp.yaml b/Documentation/devicetree/bindings/sound/asus,tf201-dsp.yaml
new file mode 100644
index 0000000000000..6b1c478bd03cc
--- /dev/null
+++ b/Documentation/devicetree/bindings/sound/asus,tf201-dsp.yaml
@@ -0,0 +1,80 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/sound/asus,tf201-dsp.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Fortemedia FM34NE based voice processor
+
+description:
+ Fortemedia FM34NE is a hardware voice processor (DSP — Digital Signal
+ Processor) designed by Fortemedia. It specializes in real-time audio
+ processing, focusing on noise suppression and echo cancellation.
+
+maintainers:
+ - Svyatoslav Ryhel <clamor95@gmail.com>
+
+allOf:
+ - $ref: dai-common.yaml#
+
+properties:
+ compatible:
+ enum:
+ - asus,sl101-dsp
+ - asus,tf101-dsp
+ - asus,tf201-dsp
+ - asus,tf300t-dsp
+ - asus,tf700t-dsp
+ - pegatron,chagall-dsp
+
+ reg:
+ maxItems: 1
+
+ clocks:
+ items:
+ - description: Master clock to the DSP
+
+ reset-gpios:
+ maxItems: 1
+
+ bypass-gpios:
+ maxItems: 1
+ description: Signal that switches DSP into programming mode.
+
+ vdd-supply: true
+
+ ports:
+ $ref: /schemas/graph.yaml#/properties/ports
+
+ port:
+ $ref: audio-graph-port.yaml#
+ unevaluatedProperties: false
+
+required:
+ - compatible
+ - reg
+ - bypass-gpios
+
+unevaluatedProperties: false
+
+examples:
+ - |
+ #include <dt-bindings/gpio/gpio.h>
+
+ i2c {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ codec@60 {
+ compatible = "asus,tf201-dsp";
+ reg = <0x60>;
+
+ clocks = <&fn34ne_clk>;
+
+ bypass-gpios = <&gpio 222 GPIO_ACTIVE_HIGH>;
+ reset-gpios = <&gpio 115 GPIO_ACTIVE_LOW>;
+
+ vdd-supply = <&vdd_1v8_dsp>;
+ };
+ };
+...
--
2.53.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v1 2/2 RESEND] ASoC: codecs: Add support for Fortemedia FM34NE DSP
2026-10-13 18:47 [PATCH v1 0/2 RESEND] ASoC: codecs: Add support for Fortemedia FM34NE DSP Svyatoslav Ryhel
2026-10-13 18:47 ` [PATCH v1 1/2 RESEND] ASoC: dt-bindings: Document " Svyatoslav Ryhel
@ 2026-10-13 18:47 ` Svyatoslav Ryhel
2026-10-13 18:54 ` sashiko-bot
2026-10-13 18:49 ` [PATCH v1 0/2 " Mark Brown
2 siblings, 1 reply; 9+ messages in thread
From: Svyatoslav Ryhel @ 2026-10-13 18:47 UTC (permalink / raw)
To: Liam Girdwood, Mark Brown, Rob Herring, Krzysztof Kozlowski,
Conor Dooley, Jaroslav Kysela, Takashi Iwai, Svyatoslav Ryhel
Cc: linux-sound, devicetree, linux-kernel
FM34NE is digital sound processing chip used for active noise suppression
mainly on ASUS Transformers.
Signed-off-by: Svyatoslav Ryhel <clamor95@gmail.com>
---
sound/soc/codecs/Kconfig | 12 +
sound/soc/codecs/Makefile | 2 +
sound/soc/codecs/fm34ne-dsp.c | 388 +++++++++++++
sound/soc/codecs/fm34ne-dsp.h | 1030 +++++++++++++++++++++++++++++++++
4 files changed, 1432 insertions(+)
create mode 100644 sound/soc/codecs/fm34ne-dsp.c
create mode 100644 sound/soc/codecs/fm34ne-dsp.h
diff --git a/sound/soc/codecs/Kconfig b/sound/soc/codecs/Kconfig
index ba59dabeeccde..7b1147b9315a9 100644
--- a/sound/soc/codecs/Kconfig
+++ b/sound/soc/codecs/Kconfig
@@ -127,6 +127,7 @@ config SND_SOC_ALL_CODECS
imply SND_SOC_ES9356
imply SND_SOC_ES7134
imply SND_SOC_ES7241
+ imply SND_SOC_FM34NE_DSP
imply SND_SOC_FRAMER
imply SND_SOC_FS210X
imply SND_SOC_GTM601
@@ -1338,6 +1339,17 @@ config SND_SOC_ES9356
select REGMAP_SOUNDWIRE
select REGMAP_SOUNDWIRE_MBQ
+config SND_SOC_FM34NE_DSP
+ tristate "DSP FM34NE driver"
+ depends on I2C && GPIOLIB
+ help
+ Say Y here if you want to add support for Fortemedia FM34NE DSP
+ mainly used in ASUS T20/T30 Transformers for input noise
+ processing.
+
+ To compile this driver as a module, choose M here: the module
+ will be called snd-soc-fm34ne-dsp.
+
config SND_SOC_FRAMER
tristate "Framer codec"
depends on GENERIC_FRAMER
diff --git a/sound/soc/codecs/Makefile b/sound/soc/codecs/Makefile
index 3826f9e4fce8a..2ddf08eae181e 100644
--- a/sound/soc/codecs/Makefile
+++ b/sound/soc/codecs/Makefile
@@ -142,6 +142,7 @@ snd-soc-es8375-y := es8375.o
snd-soc-es8389-y := es8389.o
snd-soc-es9039q2m-y := es9039q2m.o
snd-soc-es9356-y := es9356.o
+snd-soc-fm34ne-dsp-y := fm34ne-dsp.o
snd-soc-framer-y := framer-codec.o
snd-soc-fs-amp-lib-y := fs-amp-lib.o
snd-soc-fs210x-y := fs210x.o
@@ -590,6 +591,7 @@ obj-$(CONFIG_SND_SOC_ES8375) += snd-soc-es8375.o
obj-$(CONFIG_SND_SOC_ES8389) += snd-soc-es8389.o
obj-$(CONFIG_SND_SOC_ES9039Q2M) += snd-soc-es9039q2m.o
obj-$(CONFIG_SND_SOC_ES9356) += snd-soc-es9356.o
+obj-$(CONFIG_SND_SOC_FM34NE_DSP) += snd-soc-fm34ne-dsp.o
obj-$(CONFIG_SND_SOC_FRAMER) += snd-soc-framer.o
obj-$(CONFIG_SND_SOC_FS_AMP_LIB)+= snd-soc-fs-amp-lib.o
obj-$(CONFIG_SND_SOC_FS210X) += snd-soc-fs210x.o
diff --git a/sound/soc/codecs/fm34ne-dsp.c b/sound/soc/codecs/fm34ne-dsp.c
new file mode 100644
index 0000000000000..74520e37c1d1a
--- /dev/null
+++ b/sound/soc/codecs/fm34ne-dsp.c
@@ -0,0 +1,388 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include <linux/clk.h>
+#include <linux/delay.h>
+#include <linux/gpio/consumer.h>
+#include <linux/i2c.h>
+#include <linux/mod_devicetable.h>
+#include <linux/module.h>
+#include <linux/property.h>
+#include <linux/regulator/consumer.h>
+
+#include <sound/core.h>
+#include <sound/soc.h>
+
+#include "fm34ne-dsp.h"
+
+struct fm34ne_dsp {
+ struct i2c_client *client;
+
+ struct gpio_desc *bypass_gpio;
+ struct gpio_desc *reset_gpio;
+
+ struct clk *dap_mclk;
+ struct regulator *vdd_supply;
+ struct mutex lock; /* prevent simultaneous parameter writing */
+
+ const struct fm34ne_dsp_info *info;
+};
+
+static int fm34ne_dsp_set_config(struct fm34ne_dsp *dsp, enum dsp_state state)
+{
+ struct device *dev = &dsp->client->dev;
+ int ret;
+
+ guard(mutex)(&dsp->lock);
+
+ gpiod_set_value_cansleep(dsp->bypass_gpio, 1);
+ msleep(20);
+
+ switch (state) {
+ case FM34NE_NS_ENABLE:
+ ret = i2c_master_send(dsp->client, dsp->info->enable_parameter,
+ dsp->info->enable_parameter_length);
+ if (ret < 0) {
+ dev_err(dev, "Failed to set DSP enable %d\n", ret);
+ goto exit;
+ }
+
+ ret = i2c_master_send(dsp->client, dsp->info->enable_noise_suppression,
+ dsp->info->enable_ns_length);
+ if (ret < 0) {
+ dev_err(dev, "Failed to enable DSP noise suppression %d\n", ret);
+ goto exit;
+ }
+
+ break;
+
+ case FM34NE_NS_DISABLE:
+ ret = i2c_master_send(dsp->client, dsp->info->enable_parameter,
+ dsp->info->enable_parameter_length);
+ if (ret < 0) {
+ dev_err(dev, "Failed to set DSP enable with %d\n", ret);
+ goto exit;
+ }
+
+ ret = i2c_master_send(dsp->client, dsp->info->disable_noise_suppression,
+ dsp->info->disable_ns_length);
+ if (ret < 0) {
+ dev_err(dev, "Failed to disable DSP noise suppression with %d\n", ret);
+ goto exit;
+ }
+
+ break;
+
+ case FM34NE_BYPASS:
+ default:
+ ret = i2c_master_send(dsp->client, bypass_parameter, sizeof(bypass_parameter));
+ if (ret < 0) {
+ dev_err(dev, "Failed to set DSP bypass with %d\n", ret);
+ goto exit;
+ }
+
+ break;
+ }
+
+exit:
+ gpiod_set_value_cansleep(dsp->bypass_gpio, 0);
+
+ return 0;
+}
+
+static int fm34ne_dsp_ext_state_control(struct snd_soc_dapm_widget *w,
+ struct snd_kcontrol *kcontrol, int event)
+{
+ struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm);
+ struct fm34ne_dsp *dsp = snd_soc_component_get_drvdata(component);
+
+ switch (event) {
+ case SND_SOC_DAPM_POST_PMU:
+ return fm34ne_dsp_set_config(dsp, FM34NE_BYPASS);
+
+ default:
+ WARN(1, "Unexpected event");
+ return -EINVAL;
+ }
+}
+
+static int fm34ne_dsp_int_state_control(struct snd_soc_dapm_widget *w,
+ struct snd_kcontrol *kcontrol, int event)
+{
+ struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm);
+ struct fm34ne_dsp *dsp = snd_soc_component_get_drvdata(component);
+
+ switch (event) {
+ case SND_SOC_DAPM_POST_PMU:
+ return fm34ne_dsp_set_config(dsp, FM34NE_NS_ENABLE);
+
+ case SND_SOC_DAPM_PRE_PMD:
+ return fm34ne_dsp_set_config(dsp, FM34NE_NS_DISABLE);
+
+ default:
+ WARN(1, "Unexpected event");
+ return -EINVAL;
+ }
+}
+
+static const struct snd_soc_dapm_widget fm34ne_dsp_dapm_widgets[] = {
+ SND_SOC_DAPM_INPUT("DSP DMIC"),
+ SND_SOC_DAPM_INPUT("DSP AMIC"),
+
+ SND_SOC_DAPM_OUT_DRV_E("DSP Processing Engine INT", SND_SOC_NOPM,
+ 0, 0, NULL, 0, fm34ne_dsp_int_state_control,
+ SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD),
+ SND_SOC_DAPM_OUT_DRV_E("DSP Processing Engine EXT", SND_SOC_NOPM,
+ 0, 0, NULL, 0, fm34ne_dsp_ext_state_control,
+ SND_SOC_DAPM_POST_PMU),
+
+ SND_SOC_DAPM_OUTPUT("DSP Digital Mic"),
+ SND_SOC_DAPM_OUTPUT("DSP Analog Mic"),
+};
+
+static const struct snd_soc_dapm_route fm34ne_dsp_dapm_routes[] = {
+ { "DSP Processing Engine INT", NULL, "DSP DMIC" },
+ { "DSP Processing Engine EXT", NULL, "DSP AMIC" },
+ { "DSP Digital Mic", NULL, "DSP Processing Engine INT" },
+ { "DSP Analog Mic", NULL, "DSP Processing Engine EXT" },
+};
+
+static int fm34ne_dsp_enable_hw(struct fm34ne_dsp *dsp)
+{
+ struct device *dev = &dsp->client->dev;
+ int ret;
+
+ ret = clk_prepare_enable(dsp->dap_mclk);
+ if (ret)
+ return dev_err_probe(dev, ret, "Failed to enable the DSP MCLK\n");
+
+ ret = regulator_enable(dsp->vdd_supply);
+ if (ret) {
+ clk_disable_unprepare(dsp->dap_mclk);
+ return dev_err_probe(dev, ret, "Failed to enable power supply\n");
+ }
+
+ return 0;
+}
+
+static void fm34ne_dsp_reset(struct fm34ne_dsp *dsp)
+{
+ gpiod_set_value_cansleep(dsp->reset_gpio, 1);
+ msleep(20);
+ gpiod_set_value_cansleep(dsp->reset_gpio, 0);
+ msleep(100);
+}
+
+static void fm34ne_dsp_disable_hw(struct fm34ne_dsp *dsp)
+{
+ gpiod_set_value_cansleep(dsp->bypass_gpio, 0);
+ regulator_disable(dsp->vdd_supply);
+ clk_disable_unprepare(dsp->dap_mclk);
+}
+
+static int fm34ne_dsp_probe(struct snd_soc_component *component)
+{
+ struct fm34ne_dsp *dsp = snd_soc_component_get_drvdata(component);
+ int ret;
+
+ ret = fm34ne_dsp_enable_hw(dsp);
+ if (ret)
+ return ret;
+
+ fm34ne_dsp_reset(dsp);
+
+ gpiod_set_value_cansleep(dsp->bypass_gpio, 1);
+ msleep(20);
+
+ ret = i2c_smbus_write_byte(dsp->client, FM34NE_BUF_ADDR);
+ if (ret < 0) {
+ dev_err(&dsp->client->dev, "Initial write failed, aborting\n");
+ msleep(50);
+ goto exit;
+ }
+
+ ret = i2c_master_send(dsp->client, dsp->info->input_parameter,
+ dsp->info->input_parameter_length);
+ if (ret < 0)
+ goto exit;
+
+ msleep(100);
+ gpiod_set_value_cansleep(dsp->bypass_gpio, 0);
+
+ /* Init DSP to bypass mode */
+ ret = fm34ne_dsp_set_config(dsp, FM34NE_BYPASS);
+ if (ret < 0)
+ goto exit;
+
+ return 0;
+
+exit:
+ fm34ne_dsp_reset(dsp);
+ fm34ne_dsp_disable_hw(dsp);
+
+ return ret;
+}
+
+static void fm34ne_dsp_remove(struct snd_soc_component *component)
+{
+ struct fm34ne_dsp *dsp = snd_soc_component_get_drvdata(component);
+
+ fm34ne_dsp_reset(dsp);
+ fm34ne_dsp_disable_hw(dsp);
+}
+
+static const struct snd_soc_component_driver soc_component_fm34ne_dsp = {
+ .name = "fm34ne-dsp",
+ .probe = fm34ne_dsp_probe,
+ .remove = fm34ne_dsp_remove,
+ .dapm_widgets = fm34ne_dsp_dapm_widgets,
+ .num_dapm_widgets = ARRAY_SIZE(fm34ne_dsp_dapm_widgets),
+ .dapm_routes = fm34ne_dsp_dapm_routes,
+ .num_dapm_routes = ARRAY_SIZE(fm34ne_dsp_dapm_routes),
+ .idle_bias_on = 1,
+ .use_pmdown_time = 1,
+};
+
+static int fm34ne_probe(struct i2c_client *client)
+{
+ struct device *dev = &client->dev;
+ struct fm34ne_dsp *dsp;
+
+ dsp = devm_kzalloc(dev, sizeof(*dsp), GFP_KERNEL);
+ if (!dsp)
+ return -ENOMEM;
+
+ i2c_set_clientdata(client, dsp);
+ dsp->client = client;
+
+ dsp->info = device_get_match_data(dev);
+ if (!dsp->info)
+ return -ENODEV;
+
+ dev_info(&dsp->client->dev, "%s detected\n", dsp->info->model);
+
+ dsp->dap_mclk = devm_clk_get_optional(dev, NULL);
+ if (IS_ERR(dsp->dap_mclk))
+ return dev_err_probe(dev, PTR_ERR(dsp->dap_mclk),
+ "Can't retrieve DSP mclk\n");
+
+ dsp->vdd_supply = devm_regulator_get(dev, "vdd");
+ if (IS_ERR(dsp->vdd_supply))
+ return dev_err_probe(dev, PTR_ERR(dsp->vdd_supply),
+ "Failed to get vdd regulator\n");
+
+ dsp->reset_gpio = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_LOW);
+ if (IS_ERR(dsp->reset_gpio))
+ return dev_err_probe(dev, PTR_ERR(dsp->reset_gpio),
+ "Failed to get reset GPIO\n");
+
+ /*
+ * Bypass gpio is used to set audio into bypass mode in relation to dsp
+ * to be able to program it. Once programming is done, bypass gpio has
+ * to be set to low to return dsp into audio processing.
+ */
+ dsp->bypass_gpio = devm_gpiod_get(dev, "bypass", GPIOD_OUT_LOW);
+ if (IS_ERR(dsp->bypass_gpio))
+ return dev_err_probe(dev, PTR_ERR(dsp->bypass_gpio),
+ "Failed to get bypass GPIO\n");
+
+ mutex_init(&dsp->lock);
+
+ return devm_snd_soc_register_component(dev, &soc_component_fm34ne_dsp,
+ NULL, 0);
+}
+
+static const struct fm34ne_dsp_info tf101_dsp_info = {
+ .model = "ASUS Eee Pad Transformer TF101",
+ .enable_parameter = enable_parameter,
+ .enable_parameter_length = sizeof(enable_parameter),
+ .input_parameter = tf101_input_parameter,
+ .input_parameter_length = sizeof(tf101_input_parameter),
+ .enable_noise_suppression = tf101_enable_ns,
+ .enable_ns_length = sizeof(tf101_enable_ns),
+ .disable_noise_suppression = tf101_disable_ns,
+ .disable_ns_length = sizeof(tf101_disable_ns),
+};
+
+static const struct fm34ne_dsp_info sl101_dsp_info = {
+ .model = "ASUS Eee Pad Slider SL101",
+ .enable_parameter = sl101_enable_parameter,
+ .enable_parameter_length = sizeof(sl101_enable_parameter),
+ .input_parameter = sl101_input_parameter,
+ .input_parameter_length = sizeof(sl101_input_parameter),
+ .enable_noise_suppression = tf101_enable_ns,
+ .enable_ns_length = sizeof(tf101_enable_ns),
+ .disable_noise_suppression = tf101_disable_ns,
+ .disable_ns_length = sizeof(tf101_disable_ns),
+};
+
+static const struct fm34ne_dsp_info tf201_dsp_info = {
+ .model = "ASUS Transformer Prime TF201",
+ .enable_parameter = enable_parameter,
+ .enable_parameter_length = sizeof(enable_parameter),
+ .input_parameter = tf201_input_parameter,
+ .input_parameter_length = sizeof(tf201_input_parameter),
+ .enable_noise_suppression = tf201_enable_ns,
+ .enable_ns_length = sizeof(tf201_enable_ns),
+ .disable_noise_suppression = tf101_disable_ns,
+ .disable_ns_length = sizeof(tf101_disable_ns),
+};
+
+static const struct fm34ne_dsp_info tf300t_dsp_info = {
+ .model = "ASUS Transformer PAD TF300T",
+ .enable_parameter = enable_parameter,
+ .enable_parameter_length = sizeof(enable_parameter),
+ .input_parameter = tf300t_input_parameter,
+ .input_parameter_length = sizeof(tf300t_input_parameter),
+ .enable_noise_suppression = tf201_enable_ns,
+ .enable_ns_length = sizeof(tf201_enable_ns),
+ .disable_noise_suppression = tf101_disable_ns,
+ .disable_ns_length = sizeof(tf101_disable_ns),
+};
+
+static const struct fm34ne_dsp_info tf700t_dsp_info = {
+ .model = "ASUS Transformer Infinity TF700T",
+ .enable_parameter = enable_parameter,
+ .enable_parameter_length = sizeof(enable_parameter),
+ .input_parameter = tf700t_input_parameter,
+ .input_parameter_length = sizeof(tf700t_input_parameter),
+ .enable_noise_suppression = tf700t_enable_ns,
+ .enable_ns_length = sizeof(tf700t_enable_ns),
+ .disable_noise_suppression = tf700t_disable_ns,
+ .disable_ns_length = sizeof(tf700t_disable_ns),
+};
+
+static const struct fm34ne_dsp_info chagall_dsp_info = {
+ .model = "Pegatron Chagall",
+ .enable_parameter = enable_parameter,
+ .enable_parameter_length = sizeof(enable_parameter),
+ .input_parameter = tf300t_input_parameter,
+ .input_parameter_length = sizeof(tf300t_input_parameter),
+ .enable_noise_suppression = tf201_enable_ns,
+ .enable_ns_length = sizeof(tf201_enable_ns),
+ .disable_noise_suppression = tf101_disable_ns,
+ .disable_ns_length = sizeof(tf101_disable_ns),
+};
+
+static const struct of_device_id fm34ne_dsp_match_ids[] = {
+ { .compatible = "asus,sl101-dsp", .data = &sl101_dsp_info },
+ { .compatible = "asus,tf101-dsp", .data = &tf101_dsp_info },
+ { .compatible = "asus,tf201-dsp", .data = &tf201_dsp_info },
+ { .compatible = "asus,tf300t-dsp", .data = &tf300t_dsp_info },
+ { .compatible = "asus,tf700t-dsp", .data = &tf700t_dsp_info },
+ { .compatible = "pegatron,chagall-dsp", .data = &chagall_dsp_info },
+ { }
+};
+MODULE_DEVICE_TABLE(of, fm34ne_dsp_match_ids);
+
+static struct i2c_driver fm34ne_dsp_driver = {
+ .driver = {
+ .name = "fm34ne-dsp",
+ .of_match_table = fm34ne_dsp_match_ids,
+ },
+ .probe = fm34ne_probe,
+};
+module_i2c_driver(fm34ne_dsp_driver);
+
+MODULE_AUTHOR("Svyatoslav Ryhel <clamor95@gmail.com>");
+MODULE_DESCRIPTION("Fortemedia FM34NE DSP driver");
+MODULE_LICENSE("GPL");
diff --git a/sound/soc/codecs/fm34ne-dsp.h b/sound/soc/codecs/fm34ne-dsp.h
new file mode 100644
index 0000000000000..f63cbbe754538
--- /dev/null
+++ b/sound/soc/codecs/fm34ne-dsp.h
@@ -0,0 +1,1030 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#ifndef __DSP_FM34NE_H__
+#define __DSP_FM34NE_H__
+
+#define FM34NE_BUF_ADDR 0xc0
+
+enum dsp_state {
+ FM34NE_BYPASS,
+ FM34NE_NS_ENABLE,
+ FM34NE_NS_DISABLE,
+ FM34NE_MAX,
+};
+
+struct fm34ne_dsp_info {
+ const char *model;
+
+ const u8 *enable_parameter;
+ unsigned int enable_parameter_length;
+
+ const u8 *input_parameter;
+ unsigned int input_parameter_length;
+
+ const u8 *enable_noise_suppression;
+ unsigned int enable_ns_length;
+
+ const u8 *disable_noise_suppression;
+ unsigned int disable_ns_length;
+};
+
+static const u8 bypass_parameter[] = {
+ FM34NE_BUF_ADDR,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x00, 0x00, 0x04
+};
+
+static const u8 enable_parameter[] = {
+ FM34NE_BUF_ADDR,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x00, 0x00, 0x00
+};
+
+static const u8 sl101_enable_parameter[] = {
+ FM34NE_BUF_ADDR,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x07, 0xf0, 0xf0,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x0c, 0x0e, 0x20,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x04, 0x23, 0x10,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x6e, 0x40, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x00, 0x00, 0x00
+};
+
+static const u8 tf101_enable_ns[] = {
+ FM34NE_BUF_ADDR,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x03, 0x00, 0x01,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x04, 0x23, 0x10
+};
+
+static const u8 tf201_enable_ns[] = {
+ FM34NE_BUF_ADDR,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x03, 0x00, 0x01,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x04, 0x23, 0x01
+};
+
+static const u8 tf700t_enable_ns[] = {
+ FM34NE_BUF_ADDR,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x03, 0x00, 0x01,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x04, 0x23, 0x01,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x0c, 0x08, 0x00
+};
+
+static const u8 tf101_disable_ns[] = {
+ FM34NE_BUF_ADDR,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x03, 0x00, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x04, 0x00, 0x10
+};
+
+static const u8 tf700t_disable_ns[] = {
+ FM34NE_BUF_ADDR,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x03, 0x00, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x04, 0x00, 0x10,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x0c, 0x15, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x6e, 0x7f, 0xff,
+ 0xfc, 0xf3, 0x3b, 0x23, 0xcf, 0x02, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x23, 0xd0, 0x02, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x23, 0xd5, 0x10, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x00, 0x00, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x22, 0xfb, 0x00, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x84, 0x00, 0x03
+};
+
+static const u8 sl101_input_parameter[] = {
+ FM34NE_BUF_ADDR,
+ 0xfc, 0xf3, 0x68, 0x64, 0x04,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x00, 0x90, 0x00, 0x1a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x01, 0x82, 0x30, 0x50,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x02, 0x27, 0x90, 0x9f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x03, 0x19, 0x00, 0xa0,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x04, 0x1c, 0x5a, 0xaf,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x05, 0x90, 0x00, 0x1a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x06, 0x80, 0x00, 0x0a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x07, 0x1c, 0x5a, 0xaf,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x08, 0x90, 0x00, 0x0a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x09, 0x19, 0x01, 0x1f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x0a, 0x27, 0x90, 0x5f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x0b, 0x19, 0x01, 0x10,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x0c, 0x1c, 0x58, 0xef,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x0d, 0x90, 0x00, 0x1a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x0e, 0x80, 0x00, 0x0a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x0f, 0x1c, 0x58, 0xef,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x10, 0x90, 0x00, 0x0a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x11, 0x82, 0x2d, 0x20,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x12, 0x27, 0x98, 0x5f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x13, 0x19, 0x01, 0x80,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x14, 0x80, 0x50, 0x5a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x15, 0x90, 0x50, 0x3a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x16, 0x80, 0x50, 0x6f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x17, 0x90, 0x50, 0x4f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x18, 0x34, 0x00, 0x0e,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x19, 0x19, 0x00, 0x6f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x1a, 0x80, 0x00, 0xac,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x1b, 0x26, 0x7c, 0x0f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x1c, 0x34, 0x00, 0x0e,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x1d, 0x19, 0x1d, 0x82,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x1e, 0x19, 0x1c, 0xef,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x1f, 0x80, 0x53, 0x9a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x20, 0x93, 0xe2, 0xaa,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x21, 0x80, 0x4f, 0xba,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x22, 0x22, 0x7a, 0x0f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x23, 0x34, 0x00, 0x0e,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x24, 0x18, 0x2f, 0xd0,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x25, 0x94, 0x4f, 0xb6,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x26, 0x80, 0x4f, 0x6a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x27, 0x26, 0x7a, 0x0f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x28, 0x18, 0x2f, 0x80,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x29, 0x18, 0x2b, 0xcf,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x2a, 0x95, 0x62, 0x06,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x2b, 0x95, 0x61, 0x46,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x2c, 0x40, 0xfa, 0x0a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x2d, 0x40, 0xe5, 0xb0,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x2e, 0x82, 0x30, 0x14,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x2f, 0x27, 0x00, 0x0f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x30, 0x22, 0x78, 0x00,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x31, 0x83, 0xfd, 0x44,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x32, 0x26, 0xe2, 0x0f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x33, 0x19, 0x03, 0x90,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x34, 0x93, 0xfd, 0x4a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x35, 0x83, 0xfd, 0x5a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x36, 0x23, 0xa2, 0x1f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x37, 0x93, 0xfd, 0x5a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x38, 0x00, 0x00, 0x00,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x39, 0x34, 0x00, 0x0e,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x3a, 0x18, 0x3f, 0x7f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x3b, 0x34, 0x00, 0x0e,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x3c, 0x19, 0x6c, 0xa4,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x3d, 0x19, 0x66, 0x7f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x3e, 0x80, 0x79, 0xca,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x3f, 0x82, 0x2d, 0x2f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x40, 0x27, 0x97, 0x9f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x41, 0x19, 0x04, 0x40,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x42, 0x94, 0x7b, 0xd6,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x43, 0x80, 0x00, 0x1a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x44, 0x34, 0x00, 0x0e,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x45, 0x18, 0x48, 0xdf,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x46, 0x38, 0x00, 0x87,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x47, 0x09, 0x00, 0x1b,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x48, 0x34, 0x00, 0x0e,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x49, 0x18, 0x2d, 0x1f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x4a, 0x18, 0x21, 0x5f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x4b, 0x88, 0x4f, 0x47,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x4c, 0x82, 0x2a, 0x0a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x4d, 0x22, 0x62, 0x1f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x4e, 0x26, 0x62, 0x7f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x4f, 0x19, 0x05, 0x25,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x50, 0x3b, 0xff, 0xc7,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x51, 0x19, 0x05, 0x3f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x52, 0x0d, 0x01, 0xa6,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x53, 0x92, 0x2a, 0x0a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x54, 0x34, 0x00, 0x0e,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x55, 0x18, 0x23, 0x2f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x56, 0x96, 0x2a, 0xa1,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x57, 0x96, 0x2a, 0xb0,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x58, 0x9a, 0x2a, 0xca,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x59, 0x9a, 0x2a, 0xd7,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x5a, 0x96, 0x2a, 0xe8,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x5b, 0x38, 0x00, 0x0a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x5c, 0x83, 0xff, 0xaa,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x5d, 0x3b, 0x20, 0x02,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x5e, 0x36, 0x2b, 0x01,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x5f, 0x36, 0x2b, 0x60,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x60, 0x1c, 0x72, 0x2f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x61, 0x93, 0xff, 0x9a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x62, 0x93, 0xff, 0xaa,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x63, 0x86, 0x2a, 0xa1,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x64, 0x86, 0x2a, 0xb0,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x65, 0x8a, 0x2a, 0xca,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x66, 0x8a, 0x2a, 0xd7,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x67, 0x86, 0x2a, 0xe8,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x68, 0x0d, 0x08, 0x28,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x69, 0x34, 0x00, 0x0e,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x6a, 0x18, 0x24, 0x0f,
+ 0xfc, 0xf3, 0x68, 0x64, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xa0, 0x90, 0x05,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xb0, 0x50, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xa1, 0x91, 0xcb,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xb1, 0x50, 0x1a,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xa2, 0x82, 0xf3,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xb2, 0x02, 0xf5,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xa3, 0x82, 0xb5,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xb3, 0x50, 0x1f,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xa4, 0x83, 0xf4,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xb4, 0x50, 0x2a,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xa5, 0x96, 0x66,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xb5, 0x50, 0x3b,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xa6, 0x84, 0x8c,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xb6, 0x50, 0x3e,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xa7, 0xc4, 0x8c,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xb7, 0x50, 0x3e,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xa8, 0x82, 0xcc,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xb8, 0x50, 0x46,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xa9, 0xc2, 0xcc,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xb9, 0x50, 0x46,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xaa, 0xc2, 0x10,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xba, 0x50, 0x4a,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xab, 0x82, 0x10,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xbb, 0x50, 0x4a,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xac, 0x82, 0x31,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xbc, 0x50, 0x4b,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xad, 0xc2, 0x31,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xbd, 0x50, 0x4b,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xae, 0x82, 0x3f,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xbe, 0x50, 0x56,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xaf, 0xc2, 0x3f,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xbf, 0x50, 0x56,
+ 0xfc, 0xf3, 0x3b, 0x22, 0xf8, 0x80, 0x05,
+ 0xfc, 0xf3, 0x3b, 0x22, 0xc8, 0x00, 0x09,
+ 0xfc, 0xf3, 0x3b, 0x22, 0xee, 0x00, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x22, 0xf9, 0x08, 0x5f,
+ 0xfc, 0xf3, 0x3b, 0x22, 0xfa, 0x24, 0x81,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x05, 0x00, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x01, 0x00, 0x01,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x07, 0xf0, 0xf0,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x09, 0x08, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x0d, 0x01, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x0c, 0x0e, 0x20,
+ 0xfc, 0xf3, 0x3b, 0x22, 0xf2, 0x00, 0x44,
+ 0xfc, 0xf3, 0x3b, 0x22, 0xf6, 0x00, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x22, 0xc6, 0x00, 0x31,
+ 0xfc, 0xf3, 0x3b, 0x22, 0xc7, 0x00, 0x50,
+ 0xfc, 0xf3, 0x3b, 0x22, 0xd2, 0x82, 0x94,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x03, 0x00, 0x01,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x00, 0x00, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x04, 0x23, 0x10,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x2f, 0x01, 0x10,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x39, 0x00, 0x06,
+ 0xfc, 0xf3, 0x3b, 0x23, 0xcf, 0x01, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x23, 0xd0, 0x06, 0x20,
+ 0xfc, 0xf3, 0x3b, 0x23, 0xd5, 0x3c, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x6e, 0x40, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x33, 0x02, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x23, 0xb3, 0x00, 0x05,
+ 0xfc, 0xf3, 0x3b, 0x23, 0xb4, 0x00, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x70, 0x40, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xd2, 0x00, 0x32,
+ 0xfc, 0xf3, 0x3b, 0x22, 0xfb, 0x00, 0x00
+};
+
+static const u8 tf101_input_parameter[] = {
+ FM34NE_BUF_ADDR,
+ 0xfc, 0xf3, 0x68, 0x64, 0x04,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x00, 0x90, 0x00, 0x1a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x01, 0x82, 0x30, 0x50,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x02, 0x27, 0x90, 0x9f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x03, 0x19, 0x00, 0xa0,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x04, 0x1c, 0x5a, 0xaf,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x05, 0x90, 0x00, 0x1a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x06, 0x80, 0x00, 0x0a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x07, 0x1c, 0x5a, 0xaf,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x08, 0x90, 0x00, 0x0a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x09, 0x19, 0x01, 0x1f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x0a, 0x27, 0x90, 0x5f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x0b, 0x19, 0x01, 0x10,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x0c, 0x1c, 0x58, 0xef,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x0d, 0x90, 0x00, 0x1a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x0e, 0x80, 0x00, 0x0a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x0f, 0x1c, 0x58, 0xef,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x10, 0x90, 0x00, 0x0a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x11, 0x82, 0x2d, 0x20,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x12, 0x27, 0x98, 0x5f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x13, 0x19, 0x01, 0x80,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x14, 0x80, 0x50, 0x5a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x15, 0x90, 0x50, 0x3a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x16, 0x80, 0x50, 0x6f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x17, 0x90, 0x50, 0x4f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x18, 0x34, 0x00, 0x0e,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x19, 0x19, 0x00, 0x6f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x1a, 0x80, 0x00, 0xac,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x1b, 0x26, 0x7c, 0x0f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x1c, 0x34, 0x00, 0x0e,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x1d, 0x19, 0x1d, 0x82,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x1e, 0x19, 0x1c, 0xef,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x1f, 0x80, 0x53, 0x9a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x20, 0x93, 0xe2, 0xaa,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x21, 0x80, 0x4f, 0xba,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x22, 0x22, 0x7a, 0x0f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x23, 0x34, 0x00, 0x0e,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x24, 0x18, 0x2f, 0xd0,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x25, 0x94, 0x4f, 0xb6,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x26, 0x80, 0x4f, 0x6a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x27, 0x26, 0x7a, 0x0f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x28, 0x18, 0x2f, 0x80,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x29, 0x18, 0x2b, 0xcf,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x2a, 0x95, 0x62, 0x06,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x2b, 0x95, 0x61, 0x46,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x2c, 0x40, 0xfa, 0x0a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x2d, 0x40, 0xe5, 0xb0,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x2e, 0x82, 0x30, 0x14,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x2f, 0x27, 0x00, 0x0f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x30, 0x22, 0x78, 0x00,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x31, 0x83, 0xfd, 0x44,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x32, 0x26, 0xe2, 0x0f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x33, 0x19, 0x03, 0x90,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x34, 0x93, 0xfd, 0x4a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x35, 0x83, 0xfd, 0x5a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x36, 0x23, 0xa2, 0x1f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x37, 0x93, 0xfd, 0x5a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x38, 0x00, 0x00, 0x00,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x39, 0x34, 0x00, 0x0e,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x3a, 0x18, 0x3f, 0x7f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x3b, 0x34, 0x00, 0x0e,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x3c, 0x19, 0x6c, 0xa4,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x3d, 0x19, 0x66, 0x7f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x3e, 0x80, 0x79, 0xca,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x3f, 0x82, 0x2d, 0x2f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x40, 0x27, 0x97, 0x9f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x41, 0x19, 0x04, 0x40,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x42, 0x94, 0x7b, 0xd6,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x43, 0x80, 0x00, 0x1a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x44, 0x34, 0x00, 0x0e,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x45, 0x18, 0x48, 0xdf,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x46, 0x38, 0x00, 0x87,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x47, 0x09, 0x00, 0x1b,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x48, 0x34, 0x00, 0x0e,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x49, 0x18, 0x2d, 0x1f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x4a, 0x18, 0x21, 0x5f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x4b, 0x88, 0x4f, 0x47,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x4c, 0x82, 0x2a, 0x0a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x4d, 0x22, 0x62, 0x1f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x4e, 0x26, 0x62, 0x7f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x4f, 0x19, 0x05, 0x25,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x50, 0x3b, 0xff, 0xc7,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x51, 0x19, 0x05, 0x3f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x52, 0x0d, 0x01, 0xa6,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x53, 0x92, 0x2a, 0x0a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x54, 0x34, 0x00, 0x0e,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x55, 0x18, 0x23, 0x2f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x56, 0x96, 0x2a, 0xa1,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x57, 0x96, 0x2a, 0xb0,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x58, 0x9a, 0x2a, 0xca,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x59, 0x9a, 0x2a, 0xd7,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x5a, 0x96, 0x2a, 0xe8,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x5b, 0x38, 0x00, 0x0a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x5c, 0x83, 0xff, 0xaa,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x5d, 0x3b, 0x20, 0x02,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x5e, 0x36, 0x2b, 0x01,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x5f, 0x36, 0x2b, 0x60,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x60, 0x1c, 0x72, 0x2f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x61, 0x93, 0xff, 0x9a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x62, 0x93, 0xff, 0xaa,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x63, 0x86, 0x2a, 0xa1,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x64, 0x86, 0x2a, 0xb0,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x65, 0x8a, 0x2a, 0xca,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x66, 0x8a, 0x2a, 0xd7,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x67, 0x86, 0x2a, 0xe8,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x68, 0x0d, 0x08, 0x28,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x69, 0x34, 0x00, 0x0e,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x6a, 0x18, 0x24, 0x0f,
+ 0xfc, 0xf3, 0x68, 0x64, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xa0, 0x90, 0x05,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xb0, 0x50, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xa1, 0x91, 0xcb,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xb1, 0x50, 0x1a,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xa2, 0x82, 0xf3,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xb2, 0x02, 0xf5,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xa3, 0x82, 0xb5,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xb3, 0x50, 0x1f,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xa4, 0x83, 0xf4,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xb4, 0x50, 0x2a,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xa5, 0x96, 0x66,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xb5, 0x50, 0x3b,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xa6, 0x84, 0x8c,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xb6, 0x50, 0x3e,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xa7, 0xc4, 0x8c,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xb7, 0x50, 0x3e,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xa8, 0x82, 0xcc,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xb8, 0x50, 0x46,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xa9, 0xc2, 0xcc,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xb9, 0x50, 0x46,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xaa, 0xc2, 0x10,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xba, 0x50, 0x4a,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xab, 0x82, 0x10,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xbb, 0x50, 0x4a,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xac, 0x82, 0x31,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xbc, 0x50, 0x4b,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xad, 0xc2, 0x31,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xbd, 0x50, 0x4b,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xae, 0x82, 0x3f,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xbe, 0x50, 0x56,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xaf, 0xc2, 0x3f,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xbf, 0x50, 0x56,
+ 0xfc, 0xf3, 0x3b, 0x22, 0xf8, 0x80, 0x05,
+ 0xfc, 0xf3, 0x3b, 0x22, 0xc8, 0x00, 0x09,
+ 0xfc, 0xf3, 0x3b, 0x22, 0xee, 0x00, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x22, 0xf9, 0x08, 0x5f,
+ 0xfc, 0xf3, 0x3b, 0x22, 0xfa, 0x24, 0x81,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x05, 0x00, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x01, 0x00, 0x01,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x07, 0xf0, 0xf0,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x09, 0x08, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x0d, 0x01, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x0c, 0x0e, 0x20,
+ 0xfc, 0xf3, 0x3b, 0x22, 0xf2, 0x00, 0x44,
+ 0xfc, 0xf3, 0x3b, 0x22, 0xf6, 0x00, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x22, 0xc6, 0x00, 0x31,
+ 0xfc, 0xf3, 0x3b, 0x22, 0xc7, 0x00, 0x50,
+ 0xfc, 0xf3, 0x3b, 0x22, 0xd2, 0x82, 0x94,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x03, 0x00, 0x01,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x00, 0x00, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x04, 0x23, 0x10,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x2f, 0x01, 0x10,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x39, 0x00, 0x06,
+ 0xfc, 0xf3, 0x3b, 0x23, 0xcf, 0x01, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x23, 0xd0, 0x06, 0x20,
+ 0xfc, 0xf3, 0x3b, 0x23, 0xd5, 0x3c, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x6e, 0x20, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x33, 0x02, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x23, 0xb3, 0x00, 0x0a,
+ 0xfc, 0xf3, 0x3b, 0x23, 0xb4, 0x00, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x70, 0x40, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xd2, 0x00, 0x32,
+ 0xfc, 0xf3, 0x3b, 0x22, 0xfb, 0x00, 0x00
+};
+
+static const u8 tf201_input_parameter[] = {
+ FM34NE_BUF_ADDR,
+ 0xfc, 0xf3, 0x68, 0x64, 0x04,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x00, 0x90, 0x00, 0x1a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x01, 0x82, 0x30, 0x50,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x02, 0x27, 0x90, 0x9f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x03, 0x19, 0x00, 0xa0,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x04, 0x1c, 0x5a, 0xaf,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x05, 0x90, 0x00, 0x1a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x06, 0x80, 0x00, 0x0a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x07, 0x1c, 0x5a, 0xaf,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x08, 0x90, 0x00, 0x0a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x09, 0x19, 0x01, 0x1f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x0a, 0x27, 0x90, 0x5f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x0b, 0x19, 0x01, 0x10,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x0c, 0x1c, 0x58, 0xef,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x0d, 0x90, 0x00, 0x1a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x0e, 0x80, 0x00, 0x0a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x0f, 0x1c, 0x58, 0xef,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x10, 0x90, 0x00, 0x0a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x11, 0x82, 0x2d, 0x20,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x12, 0x27, 0x98, 0x5f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x13, 0x19, 0x01, 0x80,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x14, 0x80, 0x50, 0x5a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x15, 0x90, 0x50, 0x3a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x16, 0x80, 0x50, 0x6f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x17, 0x90, 0x50, 0x4f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x18, 0x34, 0x00, 0x0e,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x19, 0x19, 0x00, 0x6f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x1a, 0x80, 0x00, 0xac,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x1b, 0x26, 0x7c, 0x0f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x1c, 0x34, 0x00, 0x0e,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x1d, 0x19, 0x1d, 0x82,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x1e, 0x19, 0x1c, 0xef,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x1f, 0x80, 0x53, 0x9a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x20, 0x93, 0xe2, 0xaa,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x21, 0x80, 0x4f, 0xba,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x22, 0x22, 0x7a, 0x0f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x23, 0x34, 0x00, 0x0e,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x24, 0x18, 0x2f, 0xd0,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x25, 0x94, 0x4f, 0xb6,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x26, 0x80, 0x4f, 0x6a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x27, 0x26, 0x7a, 0x0f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x28, 0x18, 0x2f, 0x80,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x29, 0x18, 0x2b, 0xcf,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x2a, 0x95, 0x62, 0x06,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x2b, 0x95, 0x61, 0x46,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x2c, 0x40, 0xfa, 0x0a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x2d, 0x40, 0xe5, 0xb0,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x2e, 0x82, 0x30, 0x14,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x2f, 0x27, 0x00, 0x0f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x30, 0x22, 0x78, 0x00,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x31, 0x83, 0xfd, 0x44,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x32, 0x26, 0xe2, 0x0f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x33, 0x19, 0x03, 0x90,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x34, 0x93, 0xfd, 0x4a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x35, 0x83, 0xfd, 0x5a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x36, 0x23, 0xa2, 0x1f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x37, 0x93, 0xfd, 0x5a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x38, 0x00, 0x00, 0x00,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x39, 0x34, 0x00, 0x0e,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x3a, 0x18, 0x3f, 0x7f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x3b, 0x34, 0x00, 0x0e,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x3c, 0x19, 0x6c, 0xa4,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x3d, 0x19, 0x66, 0x7f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x3e, 0x80, 0x79, 0xca,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x3f, 0x82, 0x2d, 0x2f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x40, 0x27, 0x97, 0x9f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x41, 0x19, 0x04, 0x40,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x42, 0x94, 0x7b, 0xd6,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x43, 0x80, 0x00, 0x1a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x44, 0x34, 0x00, 0x0e,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x45, 0x18, 0x48, 0xdf,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x46, 0x38, 0x00, 0x87,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x47, 0x09, 0x00, 0x1b,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x48, 0x34, 0x00, 0x0e,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x49, 0x18, 0x2d, 0x1f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x4a, 0x18, 0x21, 0x5f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x4b, 0x88, 0x4f, 0x47,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x4c, 0x82, 0x2a, 0x0a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x4d, 0x22, 0x62, 0x1f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x4e, 0x26, 0x62, 0x7f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x4f, 0x19, 0x05, 0x25,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x50, 0x3b, 0xff, 0xc7,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x51, 0x19, 0x05, 0x3f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x52, 0x0d, 0x01, 0xa6,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x53, 0x92, 0x2a, 0x0a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x54, 0x34, 0x00, 0x0e,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x55, 0x18, 0x23, 0x2f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x56, 0x96, 0x2a, 0xa1,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x57, 0x96, 0x2a, 0xb0,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x58, 0x9a, 0x2a, 0xca,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x59, 0x9a, 0x2a, 0xd7,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x5a, 0x96, 0x2a, 0xe8,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x5b, 0x38, 0x00, 0x0a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x5c, 0x83, 0xff, 0xaa,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x5d, 0x3b, 0x20, 0x02,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x5e, 0x36, 0x2b, 0x01,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x5f, 0x36, 0x2b, 0x60,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x60, 0x1c, 0x72, 0x2f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x61, 0x93, 0xff, 0x9a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x62, 0x93, 0xff, 0xaa,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x63, 0x86, 0x2a, 0xa1,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x64, 0x86, 0x2a, 0xb0,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x65, 0x8a, 0x2a, 0xca,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x66, 0x8a, 0x2a, 0xd7,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x67, 0x86, 0x2a, 0xe8,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x68, 0x0d, 0x08, 0x28,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x69, 0x34, 0x00, 0x0e,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x6a, 0x18, 0x24, 0x0f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x6b, 0x83, 0xfc, 0xfa,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x6c, 0x23, 0x8a, 0xbf,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x6d, 0x82, 0x2d, 0x2f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x6e, 0x27, 0x97, 0xdf,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x6f, 0x23, 0xaa, 0x91,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x70, 0x93, 0xfc, 0xfa,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x71, 0x83, 0x80, 0x30,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x72, 0x34, 0x00, 0x0e,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x73, 0x18, 0x3e, 0x9f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x74, 0x80, 0x7a, 0x4a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x75, 0x19, 0x07, 0xe2,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x76, 0x23, 0x3e, 0x0f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x77, 0x0d, 0x00, 0xea,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x78, 0x80, 0x7b, 0xca,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x79, 0x38, 0x7e, 0x02,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x7a, 0x1c, 0x76, 0x9f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x7b, 0x90, 0x7b, 0xca,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x7c, 0x34, 0x00, 0x0e,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x7d, 0x19, 0x75, 0xcf,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x7e, 0x34, 0x00, 0x0e,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x7f, 0x19, 0x75, 0x9f,
+ 0xfc, 0xf3, 0x68, 0x64, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xa0, 0x91, 0xcb,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xb0, 0x50, 0x1a,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xa1, 0x82, 0xf3,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xb1, 0x02, 0xf5,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xa2, 0x82, 0xb5,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xb2, 0x50, 0x1f,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xa3, 0x83, 0xf4,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xb3, 0x50, 0x2a,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xa4, 0x96, 0x66,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xb4, 0x50, 0x3b,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xa5, 0x82, 0xcc,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xb5, 0x50, 0x46,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xa6, 0xc2, 0xcc,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xb6, 0x50, 0x46,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xa7, 0xc2, 0x10,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xb7, 0x50, 0x4a,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xa8, 0x82, 0x10,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xb8, 0x50, 0x4a,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xa9, 0x82, 0x31,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xb9, 0x50, 0x4b,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xaa, 0xc2, 0x31,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xba, 0x50, 0x4b,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xab, 0x82, 0x3f,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xbb, 0x50, 0x56,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xac, 0xc2, 0x3f,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xbc, 0x50, 0x56,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xad, 0x83, 0xe8,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xbd, 0x50, 0x6b,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xae, 0x97, 0x58,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xbe, 0x50, 0x74,
+ 0xfc, 0xf3, 0x3b, 0x22, 0xf8, 0x80, 0x05,
+ 0xfc, 0xf3, 0x3b, 0x22, 0xc8, 0x00, 0x29,
+ 0xfc, 0xf3, 0x3b, 0x22, 0xee, 0x00, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x22, 0xf9, 0x08, 0x5f,
+ 0xfc, 0xf3, 0x3b, 0x22, 0xfa, 0x24, 0x81,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x05, 0x00, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x01, 0x00, 0x02,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x07, 0xf0, 0xf0,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x09, 0x08, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x0d, 0x01, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x0c, 0x08, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x22, 0xf2, 0x00, 0x44,
+ 0xfc, 0xf3, 0x3b, 0x22, 0xf6, 0x00, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x22, 0xc6, 0x00, 0x06,
+ 0xfc, 0xf3, 0x3b, 0x22, 0xc7, 0x00, 0x08,
+ 0xfc, 0xf3, 0x3b, 0x22, 0xd2, 0x8a, 0x94,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x03, 0x00, 0x01,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x00, 0x00, 0x04,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x04, 0x23, 0x10,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x2f, 0x01, 0x10,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x39, 0x00, 0x06,
+ 0xfc, 0xf3, 0x3b, 0x23, 0xcf, 0x01, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x23, 0xd0, 0x06, 0x20,
+ 0xfc, 0xf3, 0x3b, 0x23, 0xd5, 0x3c, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x6e, 0x20, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x33, 0x02, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x23, 0xb3, 0x00, 0x0a,
+ 0xfc, 0xf3, 0x3b, 0x23, 0xb4, 0x00, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x70, 0x40, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xd2, 0x00, 0x32,
+ 0xfc, 0xf3, 0x3b, 0x22, 0xfb, 0x00, 0x00
+};
+
+static const u8 tf300t_input_parameter[] = {
+ FM34NE_BUF_ADDR,
+ 0xfc, 0xf3, 0x68, 0x64, 0x04,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x00, 0x90, 0x00, 0x1a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x01, 0x82, 0x30, 0x50,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x02, 0x27, 0x90, 0x9f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x03, 0x19, 0x00, 0xa0,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x04, 0x1c, 0x5a, 0xaf,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x05, 0x90, 0x00, 0x1a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x06, 0x80, 0x00, 0x0a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x07, 0x1c, 0x5a, 0xaf,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x08, 0x90, 0x00, 0x0a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x09, 0x19, 0x01, 0x1f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x0a, 0x27, 0x90, 0x5f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x0b, 0x19, 0x01, 0x10,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x0c, 0x1c, 0x58, 0xef,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x0d, 0x90, 0x00, 0x1a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x0e, 0x80, 0x00, 0x0a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x0f, 0x1c, 0x58, 0xef,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x10, 0x90, 0x00, 0x0a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x11, 0x82, 0x2d, 0x20,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x12, 0x27, 0x98, 0x5f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x13, 0x19, 0x01, 0x80,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x14, 0x80, 0x50, 0x5a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x15, 0x90, 0x50, 0x3a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x16, 0x80, 0x50, 0x6f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x17, 0x90, 0x50, 0x4f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x18, 0x34, 0x00, 0x0e,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x19, 0x19, 0x00, 0x6f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x1a, 0x80, 0x00, 0xac,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x1b, 0x26, 0x7c, 0x0f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x1c, 0x34, 0x00, 0x0e,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x1d, 0x19, 0x1d, 0x82,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x1e, 0x19, 0x1c, 0xef,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x1f, 0x80, 0x53, 0x9a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x20, 0x93, 0xe2, 0xaa,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x21, 0x80, 0x4f, 0xba,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x22, 0x22, 0x7a, 0x0f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x23, 0x34, 0x00, 0x0e,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x24, 0x18, 0x2f, 0xd0,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x25, 0x94, 0x4f, 0xb6,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x26, 0x80, 0x4f, 0x6a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x27, 0x26, 0x7a, 0x0f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x28, 0x18, 0x2f, 0x80,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x29, 0x18, 0x2b, 0xcf,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x2a, 0x95, 0x62, 0x06,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x2b, 0x95, 0x61, 0x46,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x2c, 0x40, 0xfa, 0x0a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x2d, 0x40, 0xe5, 0xb0,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x2e, 0x82, 0x30, 0x14,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x2f, 0x27, 0x00, 0x0f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x30, 0x22, 0x78, 0x00,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x31, 0x83, 0xfd, 0x44,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x32, 0x26, 0xe2, 0x0f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x33, 0x19, 0x03, 0x90,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x34, 0x93, 0xfd, 0x4a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x35, 0x83, 0xfd, 0x5a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x36, 0x23, 0xa2, 0x1f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x37, 0x93, 0xfd, 0x5a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x38, 0x00, 0x00, 0x00,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x39, 0x34, 0x00, 0x0e,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x3a, 0x18, 0x3f, 0x7f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x3b, 0x34, 0x00, 0x0e,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x3c, 0x19, 0x6c, 0xa4,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x3d, 0x19, 0x66, 0x7f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x3e, 0x80, 0x79, 0xca,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x3f, 0x82, 0x2d, 0x2f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x40, 0x27, 0x97, 0x9f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x41, 0x19, 0x04, 0x40,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x42, 0x94, 0x7b, 0xd6,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x43, 0x80, 0x00, 0x1a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x44, 0x34, 0x00, 0x0e,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x45, 0x18, 0x48, 0xdf,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x46, 0x38, 0x00, 0x87,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x47, 0x09, 0x00, 0x1b,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x48, 0x34, 0x00, 0x0e,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x49, 0x18, 0x2d, 0x1f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x4a, 0x18, 0x21, 0x5f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x4b, 0x88, 0x4f, 0x47,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x4c, 0x82, 0x2a, 0x0a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x4d, 0x22, 0x62, 0x1f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x4e, 0x26, 0x62, 0x7f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x4f, 0x19, 0x05, 0x25,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x50, 0x3b, 0xff, 0xc7,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x51, 0x19, 0x05, 0x3f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x52, 0x0d, 0x01, 0xa6,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x53, 0x92, 0x2a, 0x0a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x54, 0x34, 0x00, 0x0e,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x55, 0x18, 0x23, 0x2f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x56, 0x96, 0x2a, 0xa1,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x57, 0x96, 0x2a, 0xb0,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x58, 0x9a, 0x2a, 0xca,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x59, 0x9a, 0x2a, 0xd7,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x5a, 0x96, 0x2a, 0xe8,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x5b, 0x38, 0x00, 0x0a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x5c, 0x83, 0xff, 0xaa,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x5d, 0x3b, 0x20, 0x02,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x5e, 0x36, 0x2b, 0x01,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x5f, 0x36, 0x2b, 0x60,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x60, 0x1c, 0x72, 0x2f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x61, 0x93, 0xff, 0x9a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x62, 0x93, 0xff, 0xaa,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x63, 0x86, 0x2a, 0xa1,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x64, 0x86, 0x2a, 0xb0,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x65, 0x8a, 0x2a, 0xca,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x66, 0x8a, 0x2a, 0xd7,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x67, 0x86, 0x2a, 0xe8,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x68, 0x0d, 0x08, 0x28,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x69, 0x34, 0x00, 0x0e,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x6a, 0x18, 0x24, 0x0f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x6b, 0x83, 0xfc, 0xfa,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x6c, 0x23, 0x8a, 0xbf,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x6d, 0x82, 0x2d, 0x2f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x6e, 0x27, 0x97, 0xdf,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x6f, 0x23, 0xaa, 0x91,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x70, 0x93, 0xfc, 0xfa,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x71, 0x83, 0x80, 0x30,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x72, 0x34, 0x00, 0x0e,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x73, 0x18, 0x3e, 0x9f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x74, 0x80, 0x7a, 0x4a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x75, 0x19, 0x07, 0xe2,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x76, 0x23, 0x3e, 0x0f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x77, 0x0d, 0x00, 0xea,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x78, 0x80, 0x7b, 0xca,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x79, 0x38, 0x7e, 0x02,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x7a, 0x1c, 0x76, 0x9f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x7b, 0x90, 0x7b, 0xca,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x7c, 0x34, 0x00, 0x0e,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x7d, 0x19, 0x75, 0xcf,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x7e, 0x34, 0x00, 0x0e,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x7f, 0x19, 0x75, 0x9f,
+ 0xfc, 0xf3, 0x68, 0x64, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xa0, 0x91, 0xcb,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xb0, 0x50, 0x1a,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xa1, 0x82, 0xf3,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xb1, 0x02, 0xf5,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xa2, 0x82, 0xb5,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xb2, 0x50, 0x1f,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xa3, 0x83, 0xf4,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xb3, 0x50, 0x2a,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xa4, 0x96, 0x66,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xb4, 0x50, 0x3b,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xa5, 0x82, 0xcc,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xb5, 0x50, 0x46,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xa6, 0xc2, 0xcc,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xb6, 0x50, 0x46,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xa7, 0xc2, 0x10,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xb7, 0x50, 0x4a,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xa8, 0x82, 0x10,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xb8, 0x50, 0x4a,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xa9, 0x82, 0x31,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xb9, 0x50, 0x4b,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xaa, 0xc2, 0x31,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xba, 0x50, 0x4b,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xab, 0x82, 0x3f,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xbb, 0x50, 0x56,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xac, 0xc2, 0x3f,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xbc, 0x50, 0x56,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xad, 0x83, 0xe8,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xbd, 0x50, 0x6b,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xae, 0x97, 0x58,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xbe, 0x50, 0x74,
+ 0xfc, 0xf3, 0x3b, 0x22, 0xf8, 0x80, 0x05,
+ 0xfc, 0xf3, 0x3b, 0x22, 0xc8, 0x00, 0x29,
+ 0xfc, 0xf3, 0x3b, 0x22, 0xee, 0x00, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x22, 0xf9, 0x08, 0x5f,
+ 0xfc, 0xf3, 0x3b, 0x22, 0xfa, 0x24, 0x81,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x05, 0x00, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x01, 0x00, 0x02,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x07, 0xf0, 0xf0,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x09, 0x08, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x0d, 0x01, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x0c, 0x0e, 0x20,
+ 0xfc, 0xf3, 0x3b, 0x22, 0xf2, 0x00, 0x44,
+ 0xfc, 0xf3, 0x3b, 0x22, 0xf6, 0x00, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x22, 0xc6, 0x00, 0x06,
+ 0xfc, 0xf3, 0x3b, 0x22, 0xc7, 0x00, 0x08,
+ 0xfc, 0xf3, 0x3b, 0x22, 0xd2, 0x8a, 0x94,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x03, 0x00, 0x01,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x00, 0x00, 0x04,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x04, 0x23, 0x10,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x2f, 0x01, 0x10,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x39, 0x00, 0x06,
+ 0xfc, 0xf3, 0x3b, 0x23, 0xcf, 0x01, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x23, 0xd0, 0x06, 0x20,
+ 0xfc, 0xf3, 0x3b, 0x23, 0xd5, 0x3c, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x6e, 0x20, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x33, 0x02, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x23, 0xb3, 0x00, 0x0a,
+ 0xfc, 0xf3, 0x3b, 0x23, 0xb4, 0x00, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x70, 0x40, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xd2, 0x00, 0x32,
+ 0xfc, 0xf3, 0x3b, 0x22, 0xfb, 0x00, 0x00
+};
+
+static const u8 tf700t_input_parameter[] = {
+ FM34NE_BUF_ADDR,
+ 0xfc, 0xf3, 0x68, 0x64, 0x04,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x00, 0x90, 0x00, 0x1a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x01, 0x82, 0x30, 0x50,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x02, 0x27, 0x90, 0x9f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x03, 0x19, 0x00, 0xa0,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x04, 0x1c, 0x5a, 0xaf,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x05, 0x90, 0x00, 0x1a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x06, 0x80, 0x00, 0x0a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x07, 0x1c, 0x5a, 0xaf,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x08, 0x90, 0x00, 0x0a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x09, 0x19, 0x01, 0x1f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x0a, 0x27, 0x90, 0x5f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x0b, 0x19, 0x01, 0x10,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x0c, 0x1c, 0x58, 0xef,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x0d, 0x90, 0x00, 0x1a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x0e, 0x80, 0x00, 0x0a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x0f, 0x1c, 0x58, 0xef,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x10, 0x90, 0x00, 0x0a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x11, 0x82, 0x2d, 0x20,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x12, 0x27, 0x98, 0x5f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x13, 0x19, 0x01, 0x80,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x14, 0x80, 0x50, 0x5a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x15, 0x90, 0x50, 0x3a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x16, 0x80, 0x50, 0x6f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x17, 0x90, 0x50, 0x4f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x18, 0x34, 0x00, 0x0e,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x19, 0x19, 0x00, 0x6f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x1a, 0x80, 0x00, 0xac,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x1b, 0x26, 0x7c, 0x0f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x1c, 0x34, 0x00, 0x0e,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x1d, 0x19, 0x1d, 0x82,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x1e, 0x19, 0x1c, 0xef,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x1f, 0x80, 0x53, 0x9a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x20, 0x93, 0xe2, 0xaa,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x21, 0x80, 0x4f, 0xba,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x22, 0x22, 0x7a, 0x0f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x23, 0x34, 0x00, 0x0e,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x24, 0x18, 0x2f, 0xd0,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x25, 0x94, 0x4f, 0xb6,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x26, 0x80, 0x4f, 0x6a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x27, 0x26, 0x7a, 0x0f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x28, 0x18, 0x2f, 0x80,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x29, 0x18, 0x2b, 0xcf,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x2a, 0x95, 0x62, 0x06,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x2b, 0x95, 0x61, 0x46,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x2c, 0x40, 0xfa, 0x0a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x2d, 0x40, 0xe5, 0xb0,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x2e, 0x82, 0x30, 0x14,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x2f, 0x27, 0x00, 0x0f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x30, 0x22, 0x78, 0x00,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x31, 0x83, 0xfd, 0x44,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x32, 0x26, 0xe2, 0x0f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x33, 0x19, 0x03, 0x90,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x34, 0x93, 0xfd, 0x4a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x35, 0x83, 0xfd, 0x5a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x36, 0x23, 0xa2, 0x1f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x37, 0x93, 0xfd, 0x5a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x38, 0x00, 0x00, 0x00,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x39, 0x34, 0x00, 0x0e,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x3a, 0x18, 0x3f, 0x7f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x3b, 0x34, 0x00, 0x0e,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x3c, 0x19, 0x6c, 0xa4,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x3d, 0x19, 0x66, 0x7f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x3e, 0x80, 0x79, 0xca,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x3f, 0x82, 0x2d, 0x2f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x40, 0x27, 0x97, 0x9f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x41, 0x19, 0x04, 0x40,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x42, 0x94, 0x7b, 0xd6,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x43, 0x80, 0x00, 0x1a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x44, 0x34, 0x00, 0x0e,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x45, 0x18, 0x48, 0xdf,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x46, 0x38, 0x00, 0x87,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x47, 0x09, 0x00, 0x1b,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x48, 0x34, 0x00, 0x0e,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x49, 0x18, 0x2d, 0x1f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x4a, 0x18, 0x21, 0x5f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x4b, 0x88, 0x4f, 0x47,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x4c, 0x82, 0x2a, 0x0a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x4d, 0x22, 0x62, 0x1f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x4e, 0x26, 0x62, 0x7f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x4f, 0x19, 0x05, 0x25,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x50, 0x3b, 0xff, 0xc7,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x51, 0x19, 0x05, 0x3f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x52, 0x0d, 0x01, 0xa6,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x53, 0x92, 0x2a, 0x0a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x54, 0x34, 0x00, 0x0e,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x55, 0x18, 0x23, 0x2f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x56, 0x96, 0x2a, 0xa1,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x57, 0x96, 0x2a, 0xb0,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x58, 0x9a, 0x2a, 0xca,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x59, 0x9a, 0x2a, 0xd7,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x5a, 0x96, 0x2a, 0xe8,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x5b, 0x38, 0x00, 0x0a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x5c, 0x83, 0xff, 0xaa,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x5d, 0x3b, 0x20, 0x02,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x5e, 0x36, 0x2b, 0x01,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x5f, 0x36, 0x2b, 0x60,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x60, 0x1c, 0x72, 0x2f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x61, 0x93, 0xff, 0x9a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x62, 0x93, 0xff, 0xaa,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x63, 0x86, 0x2a, 0xa1,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x64, 0x86, 0x2a, 0xb0,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x65, 0x8a, 0x2a, 0xca,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x66, 0x8a, 0x2a, 0xd7,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x67, 0x86, 0x2a, 0xe8,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x68, 0x0d, 0x08, 0x28,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x69, 0x34, 0x00, 0x0e,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x6a, 0x18, 0x24, 0x0f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x6b, 0x83, 0xfc, 0xfa,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x6c, 0x23, 0x8a, 0xbf,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x6d, 0x82, 0x2d, 0x2f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x6e, 0x27, 0x97, 0xdf,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x6f, 0x23, 0xaa, 0x91,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x70, 0x93, 0xfc, 0xfa,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x71, 0x83, 0x80, 0x30,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x72, 0x34, 0x00, 0x0e,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x73, 0x18, 0x3e, 0x9f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x74, 0x80, 0x7a, 0x4a,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x75, 0x19, 0x07, 0xe2,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x76, 0x23, 0x3e, 0x0f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x77, 0x0d, 0x00, 0xea,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x78, 0x80, 0x7b, 0xca,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x79, 0x38, 0x7e, 0x02,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x7a, 0x1c, 0x76, 0x9f,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x7b, 0x90, 0x7b, 0xca,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x7c, 0x34, 0x00, 0x0e,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x7d, 0x19, 0x75, 0xcf,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x7e, 0x34, 0x00, 0x0e,
+ 0xfc, 0xf3, 0x0d, 0x10, 0x7f, 0x19, 0x75, 0x9f,
+ 0xfc, 0xf3, 0x68, 0x64, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xa0, 0x91, 0xcb,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xb0, 0x50, 0x1a,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xa1, 0x82, 0xf3,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xb1, 0x02, 0xf5,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xa2, 0x82, 0xb5,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xb2, 0x50, 0x1f,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xa3, 0x83, 0xf4,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xb3, 0x50, 0x2a,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xa4, 0x96, 0x66,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xb4, 0x50, 0x3b,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xa5, 0x82, 0xcc,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xb5, 0x50, 0x46,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xa6, 0xc2, 0xcc,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xb6, 0x50, 0x46,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xa7, 0xc2, 0x10,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xb7, 0x50, 0x4a,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xa8, 0x82, 0x10,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xb8, 0x50, 0x4a,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xa9, 0x82, 0x31,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xb9, 0x50, 0x4b,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xaa, 0xc2, 0x31,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xba, 0x50, 0x4b,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xab, 0x82, 0x3f,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xbb, 0x50, 0x56,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xac, 0xc2, 0x3f,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xbc, 0x50, 0x56,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xad, 0x83, 0xe8,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xbd, 0x50, 0x6b,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xae, 0x97, 0x58,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xbe, 0x50, 0x74,
+ 0xfc, 0xf3, 0x3b, 0x22, 0xf8, 0x80, 0x05,
+ 0xfc, 0xf3, 0x3b, 0x22, 0xc8, 0x00, 0x29,
+ 0xfc, 0xf3, 0x3b, 0x22, 0xee, 0x00, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x22, 0xf9, 0x08, 0x5f,
+ 0xfc, 0xf3, 0x3b, 0x22, 0xfa, 0x24, 0x81,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x05, 0x00, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x01, 0x00, 0x02,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x07, 0xf0, 0xf0,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x09, 0x08, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x0d, 0x01, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x0c, 0x0e, 0x20,
+ 0xfc, 0xf3, 0x3b, 0x22, 0xf2, 0x00, 0x44,
+ 0xfc, 0xf3, 0x3b, 0x22, 0xf6, 0x00, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x22, 0xc6, 0x00, 0x06,
+ 0xfc, 0xf3, 0x3b, 0x22, 0xc7, 0x00, 0x08,
+ 0xfc, 0xf3, 0x3b, 0x22, 0xd2, 0x8a, 0x94,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x03, 0x00, 0x01,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x00, 0x00, 0x04,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x04, 0x23, 0x10,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x2f, 0x01, 0x10,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x39, 0x00, 0x06,
+ 0xfc, 0xf3, 0x3b, 0x23, 0xcf, 0x01, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x23, 0xd0, 0x06, 0x20,
+ 0xfc, 0xf3, 0x3b, 0x23, 0xd5, 0x3c, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x6e, 0x20, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x33, 0x02, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x23, 0xb3, 0x00, 0x0a,
+ 0xfc, 0xf3, 0x3b, 0x23, 0xb4, 0x00, 0x02,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x70, 0x40, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x91, 0x40, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x92, 0x40, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x93, 0x40, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x94, 0x40, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x23, 0x95, 0x40, 0x00,
+ 0xfc, 0xf3, 0x3b, 0x3f, 0xd2, 0x00, 0x32,
+ 0xfc, 0xf3, 0x3b, 0x22, 0xfb, 0x00, 0x00
+};
+#endif
--
2.53.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH v1 0/2 RESEND] ASoC: codecs: Add support for Fortemedia FM34NE DSP
2026-10-13 18:47 [PATCH v1 0/2 RESEND] ASoC: codecs: Add support for Fortemedia FM34NE DSP Svyatoslav Ryhel
2026-10-13 18:47 ` [PATCH v1 1/2 RESEND] ASoC: dt-bindings: Document " Svyatoslav Ryhel
2026-10-13 18:47 ` [PATCH v1 2/2 RESEND] ASoC: codecs: Add support for Fortemedia " Svyatoslav Ryhel
@ 2026-10-13 18:49 ` Mark Brown
2026-10-13 18:51 ` Svyatoslav Ryhel
2 siblings, 1 reply; 9+ messages in thread
From: Mark Brown @ 2026-10-13 18:49 UTC (permalink / raw)
To: Svyatoslav Ryhel
Cc: Liam Girdwood, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Jaroslav Kysela, Takashi Iwai, linux-sound, devicetree,
linux-kernel
[-- Attachment #1: Type: text/plain, Size: 367 bytes --]
On Tue, Oct 13, 2026 at 09:47:51PM +0300, Svyatoslav Ryhel wrote:
> The Fortemedia FM34NE is digital sound processing chip used for
> active noise suppression mainly on ASUS Transformers.
>
> Resending since previous attempt seems to be malformed.
Please send a new version if you have rebased, tooling gets very
confused about which v1 it's talking about.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v1 0/2 RESEND] ASoC: codecs: Add support for Fortemedia FM34NE DSP
2026-10-13 18:49 ` [PATCH v1 0/2 " Mark Brown
@ 2026-10-13 18:51 ` Svyatoslav Ryhel
2026-10-13 18:55 ` Mark Brown
0 siblings, 1 reply; 9+ messages in thread
From: Svyatoslav Ryhel @ 2026-10-13 18:51 UTC (permalink / raw)
To: Mark Brown
Cc: Liam Girdwood, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Jaroslav Kysela, Takashi Iwai, linux-sound, devicetree,
linux-kernel
вт, 13 жовт. 2026 р. о 21:49 Mark Brown <broonie@kernel.org> пише:
>
> On Tue, Oct 13, 2026 at 09:47:51PM +0300, Svyatoslav Ryhel wrote:
> > The Fortemedia FM34NE is digital sound processing chip used for
> > active noise suppression mainly on ASUS Transformers.
> >
> > Resending since previous attempt seems to be malformed.
>
> Please send a new version if you have rebased, tooling gets very
> confused about which v1 it's talking about.
I have not rebased, it seems that format-patch malformed first
iteration. Both patchsets are made from the same commits with same
hash.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v1 2/2 RESEND] ASoC: codecs: Add support for Fortemedia FM34NE DSP
2026-10-13 18:47 ` [PATCH v1 2/2 RESEND] ASoC: codecs: Add support for Fortemedia " Svyatoslav Ryhel
@ 2026-10-13 18:54 ` sashiko-bot
0 siblings, 0 replies; 9+ messages in thread
From: sashiko-bot @ 2026-10-13 18:54 UTC (permalink / raw)
To: Svyatoslav Ryhel; +Cc: devicetree, robh, conor+dt
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [Medium] asoc: fm34ne-dsp: I2C transfer errors are silently masked by unconditional return 0
- [Low] asoc: fm34ne-dsp: mixing goto-based cleanup with guard() scope-based locking
--
commit c702ef2250bbc5a4eaf5b40b9bb43fc3e069825a
Author: Svyatoslav Ryhel <clamor95@gmail.com>
ASoC: codecs: Add support for Fortemedia FM34NE DSP
This commit introduces a new I2C-based ALSA SoC codec driver for the
Fortemedia FM34NE DSP. This chip is primarily used for active noise
suppression on devices like the ASUS Transformers.
> diff --git a/sound/soc/codecs/fm34ne-dsp.c b/sound/soc/codecs/fm34ne-dsp.c
> new file mode 100644
> index 0000000000000..74520e37c1d1a
> --- /dev/null
> +++ b/sound/soc/codecs/fm34ne-dsp.c
> @@ -0,0 +1,388 @@
[ ... ]
> +static int fm34ne_dsp_set_config(struct fm34ne_dsp *dsp, enum dsp_state state)
> +{
> + struct device *dev = &dsp->client->dev;
> + int ret;
> +
> + guard(mutex)(&dsp->lock);
> +
> + gpiod_set_value_cansleep(dsp->bypass_gpio, 1);
> + msleep(20);
> +
> + switch (state) {
> + case FM34NE_NS_ENABLE:
> + ret = i2c_master_send(dsp->client, dsp->info->enable_parameter,
> + dsp->info->enable_parameter_length);
> + if (ret < 0) {
> + dev_err(dev, "Failed to set DSP enable %d\n", ret);
> + goto exit;
[Severity: Low]
Does this mix goto-based error cleanup with scope-based locking?
According to the kernel's cleanup helpers documentation, the expectation
is that the usage of goto labels and scope-based cleanup helpers (like
guard) should not be mixed in the same function. This is to avoid confusing
ownership and lock release semantics. Could this be converted entirely to
scope-based cleanup, or stick to traditional locking?
> + }
> +
> + ret = i2c_master_send(dsp->client, dsp->info->enable_noise_suppression,
> + dsp->info->enable_ns_length);
> + if (ret < 0) {
> + dev_err(dev, "Failed to enable DSP noise suppression %d\n", ret);
> + goto exit;
> + }
> +
> + break;
[ ... ]
> +exit:
> + gpiod_set_value_cansleep(dsp->bypass_gpio, 0);
> +
> + return 0;
[Severity: Medium]
Does this unconditionally discard the error code returned by
i2c_master_send on the failure paths?
By returning 0 here after jumping to the exit label, callers like
fm34ne_dsp_probe will assume the hardware was successfully configured
even if the underlying I2C transfer failed. Should this propagate the
negative error code stored in ret instead?
> +}
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261013184755.530392-1-clamor95@gmail.com?part=2
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v1 0/2 RESEND] ASoC: codecs: Add support for Fortemedia FM34NE DSP
2026-10-13 18:51 ` Svyatoslav Ryhel
@ 2026-10-13 18:55 ` Mark Brown
2026-10-13 18:56 ` Svyatoslav Ryhel
0 siblings, 1 reply; 9+ messages in thread
From: Mark Brown @ 2026-10-13 18:55 UTC (permalink / raw)
To: Svyatoslav Ryhel
Cc: Liam Girdwood, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Jaroslav Kysela, Takashi Iwai, linux-sound, devicetree,
linux-kernel
[-- Attachment #1: Type: text/plain, Size: 887 bytes --]
On Tue, Oct 13, 2026 at 09:51:56PM +0300, Svyatoslav Ryhel wrote:
> вт, 13 жовт. 2026 р. о 21:49 Mark Brown <broonie@kernel.org> пише:
> > On Tue, Oct 13, 2026 at 09:47:51PM +0300, Svyatoslav Ryhel wrote:
> > > The Fortemedia FM34NE is digital sound processing chip used for
> > > active noise suppression mainly on ASUS Transformers.
> > > Resending since previous attempt seems to be malformed.
> > Please send a new version if you have rebased, tooling gets very
> > confused about which v1 it's talking about.
> I have not rebased, it seems that format-patch malformed first
> iteration. Both patchsets are made from the same commits with same
> hash.
That sounds like a rebase to me, and in any case the same issue is going
to apply - if you are not sending *identical* patches the tooling will
get confused about what version it's looking at.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v1 1/2 RESEND] ASoC: dt-bindings: Document FM34NE DSP
2026-10-13 18:47 ` [PATCH v1 1/2 RESEND] ASoC: dt-bindings: Document " Svyatoslav Ryhel
@ 2026-10-13 18:56 ` sashiko-bot
0 siblings, 0 replies; 9+ messages in thread
From: sashiko-bot @ 2026-10-13 18:56 UTC (permalink / raw)
To: Svyatoslav Ryhel; +Cc: devicetree, robh, conor+dt
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [Low] dt-bindings: typo in example clock phandle fn34ne_clk
- [Low] dt-bindings: missing audio-graph-port validation on nested ports children
--
commit 7ea62b580d59721cf9be3722ba0f59686684d184
Author: Svyatoslav Ryhel <clamor95@gmail.com>
ASoC: dt-bindings: Document FM34NE DSP
Document the FM34NE DSP based voice processor used in the ASUS Transformer
devices.
> diff --git a/Documentation/devicetree/bindings/sound/asus,tf201-dsp.yaml b/Documentation/devicetree/bindings/sound/asus,tf201-dsp.yaml
> new file mode 100644
> index 0000000000000..6b1c478bd03cc
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/sound/asus,tf201-dsp.yaml
> @@ -0,0 +1,80 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
[ ... ]
> + bypass-gpios:
> + maxItems: 1
> + description: Signal that switches DSP into programming mode.
> +
> + vdd-supply: true
> +
> + ports:
> + $ref: /schemas/graph.yaml#/properties/ports
[Severity: Low]
Does this node lack audio-graph-port validation for its nested port children?
When a device tree configuration uses the ports container node, any properties
inside its nested port@X children will only be validated against the generic
graph.yaml schema, not audio-graph-port.yaml#. As a result, invalid or
misspelled audio-specific properties will silently pass schema validation.
Should this explicitly apply patternProperties with a reference to
audio-graph-port.yaml# for the children?
> +
> + port:
> + $ref: audio-graph-port.yaml#
> + unevaluatedProperties: false
[ ... ]
> +examples:
> + - |
> + #include <dt-bindings/gpio/gpio.h>
> +
> + i2c {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + codec@60 {
> + compatible = "asus,tf201-dsp";
> + reg = <0x60>;
> +
> + clocks = <&fn34ne_clk>;
[Severity: Low]
This isn't a bug, but should this phandle name be &fm34ne_clk to match the
FM34NE chip name?
> +
> + bypass-gpios = <&gpio 222 GPIO_ACTIVE_HIGH>;
> + reset-gpios = <&gpio 115 GPIO_ACTIVE_LOW>;
> +
> + vdd-supply = <&vdd_1v8_dsp>;
> + };
> + };
> +...
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261013184755.530392-1-clamor95@gmail.com?part=1
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH v1 0/2 RESEND] ASoC: codecs: Add support for Fortemedia FM34NE DSP
2026-10-13 18:55 ` Mark Brown
@ 2026-10-13 18:56 ` Svyatoslav Ryhel
0 siblings, 0 replies; 9+ messages in thread
From: Svyatoslav Ryhel @ 2026-10-13 18:56 UTC (permalink / raw)
To: Mark Brown
Cc: Liam Girdwood, Rob Herring, Krzysztof Kozlowski, Conor Dooley,
Jaroslav Kysela, Takashi Iwai, linux-sound, devicetree,
linux-kernel
вт, 13 жовт. 2026 р. о 21:55 Mark Brown <broonie@kernel.org> пише:
>
> On Tue, Oct 13, 2026 at 09:51:56PM +0300, Svyatoslav Ryhel wrote:
> > вт, 13 жовт. 2026 р. о 21:49 Mark Brown <broonie@kernel.org> пише:
> > > On Tue, Oct 13, 2026 at 09:47:51PM +0300, Svyatoslav Ryhel wrote:
>
> > > > The Fortemedia FM34NE is digital sound processing chip used for
> > > > active noise suppression mainly on ASUS Transformers.
>
> > > > Resending since previous attempt seems to be malformed.
>
> > > Please send a new version if you have rebased, tooling gets very
> > > confused about which v1 it's talking about.
>
> > I have not rebased, it seems that format-patch malformed first
> > iteration. Both patchsets are made from the same commits with same
> > hash.
>
> That sounds like a rebase to me, and in any case the same issue is going
> to apply - if you are not sending *identical* patches the tooling will
> get confused about what version it's looking at.
Noted, thanks.
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2026-10-13 18:57 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-13 18:47 [PATCH v1 0/2 RESEND] ASoC: codecs: Add support for Fortemedia FM34NE DSP Svyatoslav Ryhel
2026-10-13 18:47 ` [PATCH v1 1/2 RESEND] ASoC: dt-bindings: Document " Svyatoslav Ryhel
2026-10-13 18:56 ` sashiko-bot
2026-10-13 18:47 ` [PATCH v1 2/2 RESEND] ASoC: codecs: Add support for Fortemedia " Svyatoslav Ryhel
2026-10-13 18:54 ` sashiko-bot
2026-10-13 18:49 ` [PATCH v1 0/2 " Mark Brown
2026-10-13 18:51 ` Svyatoslav Ryhel
2026-10-13 18:55 ` Mark Brown
2026-10-13 18:56 ` Svyatoslav Ryhel
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox