Загрузка данных


	/* === ПАТЧ: ГЕНЕРАЦИЯ И ЗАПИСЬ AUDIO INFOFRAME === */
	{
		union hdmi_infoframe audio_frame;
		u8 audio_buf[32];
		ssize_t audio_len;
		int i_frame;

		// 1. Инициализируем стандартную структуру аудио-инфофрейма ядра Linux
		ret = hdmi_audio_infoframe_init(&audio_frame.audio);
		if (ret < 0) {
			dev_err(dev, "LT9611: Failed to init audio infoframe: %d\n", ret);
		} else {
			// Настраиваем параметры под текущий поток из hparms
			audio_frame.audio.channels = 2; // Для SPDIF всегда 2 канала PCM
			audio_frame.audio.sample_rate = hparms->sample_rate; // 44100 или 48000 Гц
			audio_frame.audio.sample_size = HDMI_AUDIO_SAMPLE_SIZE_STREAM; // Определяется потоком

			// 2. Упаковываем структуру в бинарный массив по спецификации HDMI
			audio_len = hdmi_infoframe_pack(&audio_frame, audio_buf, sizeof(audio_buf));
			if (audio_len < 0) {
				dev_err(dev, "LT9611: Failed to pack audio infoframe: %ld\n", audio_len);
			} else {
				dev_info(dev, "LT9611: Writing Audio InfoFrame to 0x84b2 (%ld bytes)\n", audio_len);
				
				// 3. Записываем байты инфофрейма в чип последовательно, начиная с адреса 0x84b2
				for (i_frame = 0; i_frame < audio_len; i_frame++) {
					regmap_write(lt9611->regmap, 0x84b2 + i_frame, audio_buf[i_frame]);
				}

				// 4. Разрешаем чипу транслировать Audio InfoFrame в HDMI кабель (включаем BIT(4) -> 0x10)
				regmap_update_bits(lt9611->regmap, 0x843d, 0x10, 0x10);
			}
		}
	}
	/* === КОНЕЦ ПАТЧА === */

	printk("%s(%d)\n",__FUNCTION__,__LINE__);
	regmap_multi_reg_write(lt9611->regmap, seq, ARRAY_SIZE(seq));
	return 0;
}