static void log_audio_status()

in i2c/cx25840/cx25840-core.c [1899:2225]


static void log_audio_status(struct i2c_client *client)
{
	struct cx25840_state *state = to_state(i2c_get_clientdata(client));
	u8 download_ctl = cx25840_read(client, 0x803);
	u8 mod_det_stat0 = cx25840_read(client, 0x804);
	u8 mod_det_stat1 = cx25840_read(client, 0x805);
	u8 audio_config = cx25840_read(client, 0x808);
	u8 pref_mode = cx25840_read(client, 0x809);
	u8 afc0 = cx25840_read(client, 0x80b);
	u8 mute_ctl = cx25840_read(client, 0x8d3);
	int aud_input = state->aud_input;
	char *p;

	switch (mod_det_stat0) {
	case 0x00:
		p = "mono";
		break;
	case 0x01:
		p = "stereo";
		break;
	case 0x02:
		p = "dual";
		break;
	case 0x04:
		p = "tri";
		break;
	case 0x10:
		p = "mono with SAP";
		break;
	case 0x11:
		p = "stereo with SAP";
		break;
	case 0x12:
		p = "dual with SAP";
		break;
	case 0x14:
		p = "tri with SAP";
		break;
	case 0xfe:
		p = "forced mode";
		break;
	default:
		p = "not defined";
	}
	v4l_info(client, "Detected audio mode:       %s\n", p);

	switch (mod_det_stat1) {
	case 0x00:
		p = "not defined";
		break;
	case 0x01:
		p = "EIAJ";
		break;
	case 0x02:
		p = "A2-M";
		break;
	case 0x03:
		p = "A2-BG";
		break;
	case 0x04:
		p = "A2-DK1";
		break;
	case 0x05:
		p = "A2-DK2";
		break;
	case 0x06:
		p = "A2-DK3";
		break;
	case 0x07:
		p = "A1 (6.0 MHz FM Mono)";
		break;
	case 0x08:
		p = "AM-L";
		break;
	case 0x09:
		p = "NICAM-BG";
		break;
	case 0x0a:
		p = "NICAM-DK";
		break;
	case 0x0b:
		p = "NICAM-I";
		break;
	case 0x0c:
		p = "NICAM-L";
		break;
	case 0x0d:
		p = "BTSC/EIAJ/A2-M Mono (4.5 MHz FMMono)";
		break;
	case 0x0e:
		p = "IF FM Radio";
		break;
	case 0x0f:
		p = "BTSC";
		break;
	case 0x10:
		p = "high-deviation FM";
		break;
	case 0x11:
		p = "very high-deviation FM";
		break;
	case 0xfd:
		p = "unknown audio standard";
		break;
	case 0xfe:
		p = "forced audio standard";
		break;
	case 0xff:
		p = "no detected audio standard";
		break;
	default:
		p = "not defined";
	}
	v4l_info(client, "Detected audio standard:   %s\n", p);
	v4l_info(client, "Audio microcontroller:     %s\n",
		 (download_ctl & 0x10) ?
		 ((mute_ctl & 0x2) ? "detecting" : "running") : "stopped");

	switch (audio_config >> 4) {
	case 0x00:
		p = "undefined";
		break;
	case 0x01:
		p = "BTSC";
		break;
	case 0x02:
		p = "EIAJ";
		break;
	case 0x03:
		p = "A2-M";
		break;
	case 0x04:
		p = "A2-BG";
		break;
	case 0x05:
		p = "A2-DK1";
		break;
	case 0x06:
		p = "A2-DK2";
		break;
	case 0x07:
		p = "A2-DK3";
		break;
	case 0x08:
		p = "A1 (6.0 MHz FM Mono)";
		break;
	case 0x09:
		p = "AM-L";
		break;
	case 0x0a:
		p = "NICAM-BG";
		break;
	case 0x0b:
		p = "NICAM-DK";
		break;
	case 0x0c:
		p = "NICAM-I";
		break;
	case 0x0d:
		p = "NICAM-L";
		break;
	case 0x0e:
		p = "FM radio";
		break;
	case 0x0f:
		p = "automatic detection";
		break;
	default:
		p = "undefined";
	}
	v4l_info(client, "Configured audio standard: %s\n", p);

	if ((audio_config >> 4) < 0xF) {
		switch (audio_config & 0xF) {
		case 0x00:
			p = "MONO1 (LANGUAGE A/Mono L+R channel for BTSC, EIAJ, A2)";
			break;
		case 0x01:
			p = "MONO2 (LANGUAGE B)";
			break;
		case 0x02:
			p = "MONO3 (STEREO forced MONO)";
			break;
		case 0x03:
			p = "MONO4 (NICAM ANALOG-Language C/Analog Fallback)";
			break;
		case 0x04:
			p = "STEREO";
			break;
		case 0x05:
			p = "DUAL1 (AB)";
			break;
		case 0x06:
			p = "DUAL2 (AC) (FM)";
			break;
		case 0x07:
			p = "DUAL3 (BC) (FM)";
			break;
		case 0x08:
			p = "DUAL4 (AC) (AM)";
			break;
		case 0x09:
			p = "DUAL5 (BC) (AM)";
			break;
		case 0x0a:
			p = "SAP";
			break;
		default:
			p = "undefined";
		}
		v4l_info(client, "Configured audio mode:     %s\n", p);
	} else {
		switch (audio_config & 0xF) {
		case 0x00:
			p = "BG";
			break;
		case 0x01:
			p = "DK1";
			break;
		case 0x02:
			p = "DK2";
			break;
		case 0x03:
			p = "DK3";
			break;
		case 0x04:
			p = "I";
			break;
		case 0x05:
			p = "L";
			break;
		case 0x06:
			p = "BTSC";
			break;
		case 0x07:
			p = "EIAJ";
			break;
		case 0x08:
			p = "A2-M";
			break;
		case 0x09:
			p = "FM Radio";
			break;
		case 0x0f:
			p = "automatic standard and mode detection";
			break;
		default:
			p = "undefined";
		}
		v4l_info(client, "Configured audio system:   %s\n", p);
	}

	if (aud_input) {
		v4l_info(client, "Specified audio input:     Tuner (In%d)\n",
			 aud_input);
	} else {
		v4l_info(client, "Specified audio input:     External\n");
	}

	switch (pref_mode & 0xf) {
	case 0:
		p = "mono/language A";
		break;
	case 1:
		p = "language B";
		break;
	case 2:
		p = "language C";
		break;
	case 3:
		p = "analog fallback";
		break;
	case 4:
		p = "stereo";
		break;
	case 5:
		p = "language AC";
		break;
	case 6:
		p = "language BC";
		break;
	case 7:
		p = "language AB";
		break;
	default:
		p = "undefined";
	}
	v4l_info(client, "Preferred audio mode:      %s\n", p);

	if ((audio_config & 0xf) == 0xf) {
		switch ((afc0 >> 3) & 0x3) {
		case 0:
			p = "system DK";
			break;
		case 1:
			p = "system L";
			break;
		case 2:
			p = "autodetect";
			break;
		default:
			p = "undefined";
		}
		v4l_info(client, "Selected 65 MHz format:    %s\n", p);

		switch (afc0 & 0x7) {
		case 0:
			p = "chroma";
			break;
		case 1:
			p = "BTSC";
			break;
		case 2:
			p = "EIAJ";
			break;
		case 3:
			p = "A2-M";
			break;
		case 4:
			p = "autodetect";
			break;
		default:
			p = "undefined";
		}
		v4l_info(client, "Selected 45 MHz format:    %s\n", p);
	}
}