tcu                45 drivers/clk/ingenic/tcu.c 	struct ingenic_tcu *tcu;
tcu                68 drivers/clk/ingenic/tcu.c 	struct ingenic_tcu *tcu = tcu_clk->tcu;
tcu                70 drivers/clk/ingenic/tcu.c 	regmap_write(tcu->map, TCU_REG_TSCR, BIT(info->gate_bit));
tcu                79 drivers/clk/ingenic/tcu.c 	struct ingenic_tcu *tcu = tcu_clk->tcu;
tcu                81 drivers/clk/ingenic/tcu.c 	regmap_write(tcu->map, TCU_REG_TSSR, BIT(info->gate_bit));
tcu                90 drivers/clk/ingenic/tcu.c 	regmap_read(tcu_clk->tcu->map, TCU_REG_TSR, &value);
tcu                99 drivers/clk/ingenic/tcu.c 	struct ingenic_tcu *tcu = tcu_clk->tcu;
tcu               108 drivers/clk/ingenic/tcu.c 	if (!tcu->clk) {
tcu               110 drivers/clk/ingenic/tcu.c 		regmap_write(tcu->map, TCU_REG_TSCR, BIT(info->gate_bit));
tcu               120 drivers/clk/ingenic/tcu.c 	struct ingenic_tcu *tcu = tcu_clk->tcu;
tcu               122 drivers/clk/ingenic/tcu.c 	if (!tcu->clk)
tcu               123 drivers/clk/ingenic/tcu.c 		regmap_write(tcu->map, TCU_REG_TSSR, BIT(info->gate_bit));
tcu               133 drivers/clk/ingenic/tcu.c 	ret = regmap_read(tcu_clk->tcu->map, info->tcsr_reg, &val);
tcu               148 drivers/clk/ingenic/tcu.c 	ret = regmap_update_bits(tcu_clk->tcu->map, info->tcsr_reg,
tcu               166 drivers/clk/ingenic/tcu.c 	ret = regmap_read(tcu_clk->tcu->map, info->tcsr_reg, &prescale);
tcu               210 drivers/clk/ingenic/tcu.c 	ret = regmap_update_bits(tcu_clk->tcu->map, info->tcsr_reg,
tcu               269 drivers/clk/ingenic/tcu.c static int __init ingenic_tcu_register_clock(struct ingenic_tcu *tcu,
tcu               284 drivers/clk/ingenic/tcu.c 	tcu_clk->tcu = tcu;
tcu               288 drivers/clk/ingenic/tcu.c 	regmap_update_bits(tcu->map, info->tcsr_reg, 0xffff, BIT(parent));
tcu               330 drivers/clk/ingenic/tcu.c 	struct ingenic_tcu *tcu;
tcu               339 drivers/clk/ingenic/tcu.c 	tcu = kzalloc(sizeof(*tcu), GFP_KERNEL);
tcu               340 drivers/clk/ingenic/tcu.c 	if (!tcu)
tcu               343 drivers/clk/ingenic/tcu.c 	tcu->map = map;
tcu               344 drivers/clk/ingenic/tcu.c 	tcu->soc_info = id->data;
tcu               346 drivers/clk/ingenic/tcu.c 	if (tcu->soc_info->has_tcu_clk) {
tcu               347 drivers/clk/ingenic/tcu.c 		tcu->clk = of_clk_get_by_name(np, "tcu");
tcu               348 drivers/clk/ingenic/tcu.c 		if (IS_ERR(tcu->clk)) {
tcu               349 drivers/clk/ingenic/tcu.c 			ret = PTR_ERR(tcu->clk);
tcu               354 drivers/clk/ingenic/tcu.c 		ret = clk_prepare_enable(tcu->clk);
tcu               361 drivers/clk/ingenic/tcu.c 	tcu->clocks = kzalloc(sizeof(*tcu->clocks) +
tcu               362 drivers/clk/ingenic/tcu.c 			      sizeof(*tcu->clocks->hws) * TCU_CLK_COUNT,
tcu               364 drivers/clk/ingenic/tcu.c 	if (!tcu->clocks) {
tcu               369 drivers/clk/ingenic/tcu.c 	tcu->clocks->num = TCU_CLK_COUNT;
tcu               371 drivers/clk/ingenic/tcu.c 	for (i = 0; i < tcu->soc_info->num_channels; i++) {
tcu               372 drivers/clk/ingenic/tcu.c 		ret = ingenic_tcu_register_clock(tcu, i, TCU_PARENT_EXT,
tcu               374 drivers/clk/ingenic/tcu.c 						 tcu->clocks);
tcu               388 drivers/clk/ingenic/tcu.c 	ret = ingenic_tcu_register_clock(tcu, TCU_CLK_WDT, TCU_PARENT_RTC,
tcu               390 drivers/clk/ingenic/tcu.c 					 tcu->clocks);
tcu               396 drivers/clk/ingenic/tcu.c 	if (tcu->soc_info->has_ost) {
tcu               397 drivers/clk/ingenic/tcu.c 		ret = ingenic_tcu_register_clock(tcu, TCU_CLK_OST,
tcu               400 drivers/clk/ingenic/tcu.c 						 tcu->clocks);
tcu               407 drivers/clk/ingenic/tcu.c 	ret = of_clk_add_hw_provider(np, of_clk_hw_onecell_get, tcu->clocks);
tcu               413 drivers/clk/ingenic/tcu.c 	ingenic_tcu = tcu;
tcu               418 drivers/clk/ingenic/tcu.c 	if (tcu->soc_info->has_ost)
tcu               419 drivers/clk/ingenic/tcu.c 		clk_hw_unregister(tcu->clocks->hws[i + 1]);
tcu               421 drivers/clk/ingenic/tcu.c 	clk_hw_unregister(tcu->clocks->hws[i]);
tcu               423 drivers/clk/ingenic/tcu.c 	for (i = 0; i < tcu->clocks->num; i++)
tcu               424 drivers/clk/ingenic/tcu.c 		if (tcu->clocks->hws[i])
tcu               425 drivers/clk/ingenic/tcu.c 			clk_hw_unregister(tcu->clocks->hws[i]);
tcu               426 drivers/clk/ingenic/tcu.c 	kfree(tcu->clocks);
tcu               428 drivers/clk/ingenic/tcu.c 	if (tcu->soc_info->has_tcu_clk)
tcu               429 drivers/clk/ingenic/tcu.c 		clk_disable_unprepare(tcu->clk);
tcu               431 drivers/clk/ingenic/tcu.c 	if (tcu->soc_info->has_tcu_clk)
tcu               432 drivers/clk/ingenic/tcu.c 		clk_put(tcu->clk);
tcu               434 drivers/clk/ingenic/tcu.c 	kfree(tcu);
tcu               440 drivers/clk/ingenic/tcu.c 	struct ingenic_tcu *tcu = ingenic_tcu;
tcu               442 drivers/clk/ingenic/tcu.c 	if (tcu->clk)
tcu               443 drivers/clk/ingenic/tcu.c 		clk_disable(tcu->clk);
tcu               450 drivers/clk/ingenic/tcu.c 	struct ingenic_tcu *tcu = ingenic_tcu;
tcu               452 drivers/clk/ingenic/tcu.c 	if (tcu->clk)
tcu               453 drivers/clk/ingenic/tcu.c 		clk_enable(tcu->clk);
tcu                42 drivers/clocksource/ingenic-timer.c 	struct ingenic_tcu *tcu = ingenic_tcu;
tcu                45 drivers/clocksource/ingenic-timer.c 	regmap_read(tcu->map, TCU_REG_TCNTc(tcu->cs_channel), &count);
tcu                62 drivers/clocksource/ingenic-timer.c 	struct ingenic_tcu *tcu = to_ingenic_tcu(evt);
tcu                64 drivers/clocksource/ingenic-timer.c 	regmap_write(tcu->map, TCU_REG_TECR, BIT(tcu->timer_channel));
tcu                72 drivers/clocksource/ingenic-timer.c 	struct ingenic_tcu *tcu = to_ingenic_tcu(evt);
tcu                77 drivers/clocksource/ingenic-timer.c 	regmap_write(tcu->map, TCU_REG_TDFRc(tcu->timer_channel), next);
tcu                78 drivers/clocksource/ingenic-timer.c 	regmap_write(tcu->map, TCU_REG_TCNTc(tcu->timer_channel), 0);
tcu                79 drivers/clocksource/ingenic-timer.c 	regmap_write(tcu->map, TCU_REG_TESR, BIT(tcu->timer_channel));
tcu                87 drivers/clocksource/ingenic-timer.c 	struct ingenic_tcu *tcu = to_ingenic_tcu(evt);
tcu                89 drivers/clocksource/ingenic-timer.c 	regmap_write(tcu->map, TCU_REG_TECR, BIT(tcu->timer_channel));
tcu               109 drivers/clocksource/ingenic-timer.c 					 struct ingenic_tcu *tcu)
tcu               111 drivers/clocksource/ingenic-timer.c 	unsigned int timer_virq, channel = tcu->timer_channel;
tcu               116 drivers/clocksource/ingenic-timer.c 	tcu->timer_clk = ingenic_tcu_get_clock(np, channel);
tcu               117 drivers/clocksource/ingenic-timer.c 	if (IS_ERR(tcu->timer_clk))
tcu               118 drivers/clocksource/ingenic-timer.c 		return PTR_ERR(tcu->timer_clk);
tcu               120 drivers/clocksource/ingenic-timer.c 	err = clk_prepare_enable(tcu->timer_clk);
tcu               124 drivers/clocksource/ingenic-timer.c 	rate = clk_get_rate(tcu->timer_clk);
tcu               142 drivers/clocksource/ingenic-timer.c 	snprintf(tcu->name, sizeof(tcu->name), "TCU");
tcu               145 drivers/clocksource/ingenic-timer.c 			  tcu->name, &tcu->cevt);
tcu               149 drivers/clocksource/ingenic-timer.c 	tcu->cevt.cpumask = cpumask_of(smp_processor_id());
tcu               150 drivers/clocksource/ingenic-timer.c 	tcu->cevt.features = CLOCK_EVT_FEAT_ONESHOT;
tcu               151 drivers/clocksource/ingenic-timer.c 	tcu->cevt.name = tcu->name;
tcu               152 drivers/clocksource/ingenic-timer.c 	tcu->cevt.rating = 200;
tcu               153 drivers/clocksource/ingenic-timer.c 	tcu->cevt.set_state_shutdown = ingenic_tcu_cevt_set_state_shutdown;
tcu               154 drivers/clocksource/ingenic-timer.c 	tcu->cevt.set_next_event = ingenic_tcu_cevt_set_next;
tcu               156 drivers/clocksource/ingenic-timer.c 	clockevents_config_and_register(&tcu->cevt, rate, 10, 0xffff);
tcu               163 drivers/clocksource/ingenic-timer.c 	clk_disable_unprepare(tcu->timer_clk);
tcu               165 drivers/clocksource/ingenic-timer.c 	clk_put(tcu->timer_clk);
tcu               170 drivers/clocksource/ingenic-timer.c 					       struct ingenic_tcu *tcu)
tcu               172 drivers/clocksource/ingenic-timer.c 	unsigned int channel = tcu->cs_channel;
tcu               173 drivers/clocksource/ingenic-timer.c 	struct clocksource *cs = &tcu->cs;
tcu               177 drivers/clocksource/ingenic-timer.c 	tcu->cs_clk = ingenic_tcu_get_clock(np, channel);
tcu               178 drivers/clocksource/ingenic-timer.c 	if (IS_ERR(tcu->cs_clk))
tcu               179 drivers/clocksource/ingenic-timer.c 		return PTR_ERR(tcu->cs_clk);
tcu               181 drivers/clocksource/ingenic-timer.c 	err = clk_prepare_enable(tcu->cs_clk);
tcu               185 drivers/clocksource/ingenic-timer.c 	rate = clk_get_rate(tcu->cs_clk);
tcu               192 drivers/clocksource/ingenic-timer.c 	regmap_update_bits(tcu->map, TCU_REG_TCSRc(channel),
tcu               196 drivers/clocksource/ingenic-timer.c 	regmap_write(tcu->map, TCU_REG_TDFRc(channel), 0xffff);
tcu               197 drivers/clocksource/ingenic-timer.c 	regmap_write(tcu->map, TCU_REG_TCNTc(channel), 0);
tcu               200 drivers/clocksource/ingenic-timer.c 	regmap_write(tcu->map, TCU_REG_TESR, BIT(channel));
tcu               215 drivers/clocksource/ingenic-timer.c 	clk_disable_unprepare(tcu->cs_clk);
tcu               217 drivers/clocksource/ingenic-timer.c 	clk_put(tcu->cs_clk);
tcu               240 drivers/clocksource/ingenic-timer.c 	struct ingenic_tcu *tcu;
tcu               251 drivers/clocksource/ingenic-timer.c 	tcu = kzalloc(sizeof(*tcu), GFP_KERNEL);
tcu               252 drivers/clocksource/ingenic-timer.c 	if (!tcu)
tcu               256 drivers/clocksource/ingenic-timer.c 	tcu->pwm_channels_mask = GENMASK(soc_info->num_channels - 1, 2);
tcu               258 drivers/clocksource/ingenic-timer.c 			     (u32 *)&tcu->pwm_channels_mask);
tcu               261 drivers/clocksource/ingenic-timer.c 	if (hweight8(tcu->pwm_channels_mask) > soc_info->num_channels - 2) {
tcu               263 drivers/clocksource/ingenic-timer.c 			tcu->pwm_channels_mask);
tcu               268 drivers/clocksource/ingenic-timer.c 	tcu->map = map;
tcu               269 drivers/clocksource/ingenic-timer.c 	ingenic_tcu = tcu;
tcu               271 drivers/clocksource/ingenic-timer.c 	tcu->timer_channel = find_first_zero_bit(&tcu->pwm_channels_mask,
tcu               273 drivers/clocksource/ingenic-timer.c 	tcu->cs_channel = find_next_zero_bit(&tcu->pwm_channels_mask,
tcu               275 drivers/clocksource/ingenic-timer.c 					     tcu->timer_channel + 1);
tcu               277 drivers/clocksource/ingenic-timer.c 	ret = ingenic_tcu_clocksource_init(np, tcu);
tcu               283 drivers/clocksource/ingenic-timer.c 	ret = ingenic_tcu_timer_init(np, tcu);
tcu               288 drivers/clocksource/ingenic-timer.c 	rate = clk_get_rate(tcu->cs_clk);
tcu               294 drivers/clocksource/ingenic-timer.c 	clocksource_unregister(&tcu->cs);
tcu               295 drivers/clocksource/ingenic-timer.c 	clk_disable_unprepare(tcu->cs_clk);
tcu               296 drivers/clocksource/ingenic-timer.c 	clk_put(tcu->cs_clk);
tcu               298 drivers/clocksource/ingenic-timer.c 	kfree(tcu);
tcu               316 drivers/clocksource/ingenic-timer.c 	struct ingenic_tcu *tcu = dev_get_drvdata(dev);
tcu               318 drivers/clocksource/ingenic-timer.c 	clk_disable(tcu->cs_clk);
tcu               319 drivers/clocksource/ingenic-timer.c 	clk_disable(tcu->timer_clk);
tcu               325 drivers/clocksource/ingenic-timer.c 	struct ingenic_tcu *tcu = dev_get_drvdata(dev);
tcu               328 drivers/clocksource/ingenic-timer.c 	ret = clk_enable(tcu->timer_clk);
tcu               332 drivers/clocksource/ingenic-timer.c 	ret = clk_enable(tcu->cs_clk);
tcu               334 drivers/clocksource/ingenic-timer.c 		clk_disable(tcu->timer_clk);
tcu               448 drivers/hid/hid-roccat-kone.c 	return snprintf(buf, PAGE_SIZE, "%d\n", kone->settings.tcu);
tcu               516 drivers/hid/hid-roccat-kone.c 	if (kone->settings.tcu != state) {
tcu               517 drivers/hid/hid-roccat-kone.c 		kone->settings.tcu = state;
tcu               543 drivers/hid/hid-roccat-kone.c static DEVICE_ATTR(tcu, 0660, kone_sysfs_show_tcu, kone_sysfs_set_tcu);
tcu               139 drivers/hid/hid-roccat-kone.h 	uint8_t  tcu; /* 0 = off, 1 = on */
tcu               183 drivers/hid/hid-roccat-koneplus.c KONEPLUS_BIN_ATTRIBUTE_RW(tcu, TCU);
tcu                47 drivers/hid/hid-roccat-konepure.c ROCCAT_COMMON2_BIN_ATTRIBUTE_RW(tcu, 0x0c, 0x04);
tcu                91 drivers/irqchip/irq-ingenic-tcu.c 	struct ingenic_tcu *tcu;
tcu               100 drivers/irqchip/irq-ingenic-tcu.c 	tcu = kzalloc(sizeof(*tcu), GFP_KERNEL);
tcu               101 drivers/irqchip/irq-ingenic-tcu.c 	if (!tcu)
tcu               104 drivers/irqchip/irq-ingenic-tcu.c 	tcu->map = map;
tcu               107 drivers/irqchip/irq-ingenic-tcu.c 	if (irqs < 0 || irqs > ARRAY_SIZE(tcu->parent_irqs)) {
tcu               113 drivers/irqchip/irq-ingenic-tcu.c 	tcu->nb_parent_irqs = irqs;
tcu               115 drivers/irqchip/irq-ingenic-tcu.c 	tcu->domain = irq_domain_add_linear(np, 32, &irq_generic_chip_ops,
tcu               117 drivers/irqchip/irq-ingenic-tcu.c 	if (!tcu->domain) {
tcu               122 drivers/irqchip/irq-ingenic-tcu.c 	ret = irq_alloc_domain_generic_chips(tcu->domain, 32, 1, "TCU",
tcu               130 drivers/irqchip/irq-ingenic-tcu.c 	gc = irq_get_domain_generic_chip(tcu->domain, 0);
tcu               134 drivers/irqchip/irq-ingenic-tcu.c 	gc->private = tcu->map;
tcu               145 drivers/irqchip/irq-ingenic-tcu.c 	regmap_write(tcu->map, TCU_REG_TMSR, IRQ_MSK(32));
tcu               158 drivers/irqchip/irq-ingenic-tcu.c 		tcu->parent_irqs[i] = irq_of_parse_and_map(np, i);
tcu               159 drivers/irqchip/irq-ingenic-tcu.c 		if (!tcu->parent_irqs[i]) {
tcu               164 drivers/irqchip/irq-ingenic-tcu.c 		irq_set_chained_handler_and_data(tcu->parent_irqs[i],
tcu               166 drivers/irqchip/irq-ingenic-tcu.c 						 tcu->domain);
tcu               173 drivers/irqchip/irq-ingenic-tcu.c 		irq_dispose_mapping(tcu->parent_irqs[i - 1]);
tcu               175 drivers/irqchip/irq-ingenic-tcu.c 	irq_domain_remove(tcu->domain);
tcu               177 drivers/irqchip/irq-ingenic-tcu.c 	kfree(tcu);
tcu                52 drivers/tty/serial/tegra-tcu.c static void tegra_tcu_write_one(struct tegra_tcu *tcu, u32 value,
tcu                59 drivers/tty/serial/tegra-tcu.c 	mbox_send_message(tcu->tx, msg);
tcu                60 drivers/tty/serial/tegra-tcu.c 	mbox_flush(tcu->tx, 1000);
tcu                63 drivers/tty/serial/tegra-tcu.c static void tegra_tcu_write(struct tegra_tcu *tcu, const char *s,
tcu                83 drivers/tty/serial/tegra-tcu.c 			tegra_tcu_write_one(tcu, value, 3);
tcu                89 drivers/tty/serial/tegra-tcu.c 		tegra_tcu_write_one(tcu, value, written);
tcu                94 drivers/tty/serial/tegra-tcu.c 	struct tegra_tcu *tcu = port->private_data;
tcu               103 drivers/tty/serial/tegra-tcu.c 		tegra_tcu_write(tcu, &xmit->buf[xmit->tail], count);
tcu               150 drivers/tty/serial/tegra-tcu.c 	struct tegra_tcu *tcu = container_of(cons, struct tegra_tcu, console);
tcu               152 drivers/tty/serial/tegra-tcu.c 	tegra_tcu_write(tcu, s, count);
tcu               163 drivers/tty/serial/tegra-tcu.c 	struct tegra_tcu *tcu = container_of(cl, struct tegra_tcu, rx_client);
tcu               164 drivers/tty/serial/tegra-tcu.c 	struct tty_port *port = &tcu->port.state->port;
tcu               180 drivers/tty/serial/tegra-tcu.c 	struct tegra_tcu *tcu;
tcu               183 drivers/tty/serial/tegra-tcu.c 	tcu = devm_kzalloc(&pdev->dev, sizeof(*tcu), GFP_KERNEL);
tcu               184 drivers/tty/serial/tegra-tcu.c 	if (!tcu)
tcu               187 drivers/tty/serial/tegra-tcu.c 	tcu->tx_client.dev = &pdev->dev;
tcu               188 drivers/tty/serial/tegra-tcu.c 	tcu->rx_client.dev = &pdev->dev;
tcu               189 drivers/tty/serial/tegra-tcu.c 	tcu->rx_client.rx_callback = tegra_tcu_receive;
tcu               191 drivers/tty/serial/tegra-tcu.c 	tcu->tx = mbox_request_channel_byname(&tcu->tx_client, "tx");
tcu               192 drivers/tty/serial/tegra-tcu.c 	if (IS_ERR(tcu->tx)) {
tcu               193 drivers/tty/serial/tegra-tcu.c 		err = PTR_ERR(tcu->tx);
tcu               198 drivers/tty/serial/tegra-tcu.c 	tcu->rx = mbox_request_channel_byname(&tcu->rx_client, "rx");
tcu               199 drivers/tty/serial/tegra-tcu.c 	if (IS_ERR(tcu->rx)) {
tcu               200 drivers/tty/serial/tegra-tcu.c 		err = PTR_ERR(tcu->rx);
tcu               207 drivers/tty/serial/tegra-tcu.c 	strcpy(tcu->console.name, "ttyTCU");
tcu               208 drivers/tty/serial/tegra-tcu.c 	tcu->console.device = uart_console_device;
tcu               209 drivers/tty/serial/tegra-tcu.c 	tcu->console.flags = CON_PRINTBUFFER | CON_ANYTIME;
tcu               210 drivers/tty/serial/tegra-tcu.c 	tcu->console.index = -1;
tcu               211 drivers/tty/serial/tegra-tcu.c 	tcu->console.write = tegra_tcu_console_write;
tcu               212 drivers/tty/serial/tegra-tcu.c 	tcu->console.setup = tegra_tcu_console_setup;
tcu               213 drivers/tty/serial/tegra-tcu.c 	tcu->console.data = &tcu->driver;
tcu               217 drivers/tty/serial/tegra-tcu.c 	tcu->driver.owner = THIS_MODULE;
tcu               218 drivers/tty/serial/tegra-tcu.c 	tcu->driver.driver_name = "tegra-tcu";
tcu               219 drivers/tty/serial/tegra-tcu.c 	tcu->driver.dev_name = "ttyTCU";
tcu               221 drivers/tty/serial/tegra-tcu.c 	tcu->driver.cons = &tcu->console;
tcu               223 drivers/tty/serial/tegra-tcu.c 	tcu->driver.nr = 1;
tcu               225 drivers/tty/serial/tegra-tcu.c 	err = uart_register_driver(&tcu->driver);
tcu               233 drivers/tty/serial/tegra-tcu.c 	port = &tcu->port;
tcu               241 drivers/tty/serial/tegra-tcu.c 	port->private_data = tcu;
tcu               243 drivers/tty/serial/tegra-tcu.c 	err = uart_add_one_port(&tcu->driver, port);
tcu               249 drivers/tty/serial/tegra-tcu.c 	platform_set_drvdata(pdev, tcu);
tcu               251 drivers/tty/serial/tegra-tcu.c 	register_console(&tcu->console);
tcu               257 drivers/tty/serial/tegra-tcu.c 	uart_unregister_driver(&tcu->driver);
tcu               259 drivers/tty/serial/tegra-tcu.c 	mbox_free_channel(tcu->rx);
tcu               261 drivers/tty/serial/tegra-tcu.c 	mbox_free_channel(tcu->tx);
tcu               268 drivers/tty/serial/tegra-tcu.c 	struct tegra_tcu *tcu = platform_get_drvdata(pdev);
tcu               271 drivers/tty/serial/tegra-tcu.c 	unregister_console(&tcu->console);
tcu               273 drivers/tty/serial/tegra-tcu.c 	uart_remove_one_port(&tcu->driver, &tcu->port);
tcu               274 drivers/tty/serial/tegra-tcu.c 	uart_unregister_driver(&tcu->driver);
tcu               275 drivers/tty/serial/tegra-tcu.c 	mbox_free_channel(tcu->rx);
tcu               276 drivers/tty/serial/tegra-tcu.c 	mbox_free_channel(tcu->tx);