162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-or-later 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * ALSA driver for VT1720/VT1724 (Envy24PT/Envy24HT) 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Lowlevel functions for VT1720-based motherboards 662306a36Sopenharmony_ci * 762306a36Sopenharmony_ci * Copyright (c) 2004 Takashi Iwai <tiwai@suse.de> 862306a36Sopenharmony_ci */ 962306a36Sopenharmony_ci 1062306a36Sopenharmony_ci#include <linux/delay.h> 1162306a36Sopenharmony_ci#include <linux/interrupt.h> 1262306a36Sopenharmony_ci#include <linux/init.h> 1362306a36Sopenharmony_ci#include <sound/core.h> 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_ci#include "ice1712.h" 1662306a36Sopenharmony_ci#include "envy24ht.h" 1762306a36Sopenharmony_ci#include "vt1720_mobo.h" 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_ci 2062306a36Sopenharmony_cistatic int k8x800_init(struct snd_ice1712 *ice) 2162306a36Sopenharmony_ci{ 2262306a36Sopenharmony_ci ice->vt1720 = 1; 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_ci /* VT1616 codec */ 2562306a36Sopenharmony_ci ice->num_total_dacs = 6; 2662306a36Sopenharmony_ci ice->num_total_adcs = 2; 2762306a36Sopenharmony_ci 2862306a36Sopenharmony_ci /* WM8728 codec */ 2962306a36Sopenharmony_ci /* FIXME: TODO */ 3062306a36Sopenharmony_ci 3162306a36Sopenharmony_ci return 0; 3262306a36Sopenharmony_ci} 3362306a36Sopenharmony_ci 3462306a36Sopenharmony_cistatic int k8x800_add_controls(struct snd_ice1712 *ice) 3562306a36Sopenharmony_ci{ 3662306a36Sopenharmony_ci /* FIXME: needs some quirks for VT1616? */ 3762306a36Sopenharmony_ci return 0; 3862306a36Sopenharmony_ci} 3962306a36Sopenharmony_ci 4062306a36Sopenharmony_ci/* EEPROM image */ 4162306a36Sopenharmony_ci 4262306a36Sopenharmony_cistatic const unsigned char k8x800_eeprom[] = { 4362306a36Sopenharmony_ci [ICE_EEP2_SYSCONF] = 0x01, /* clock 256, 1ADC, 2DACs */ 4462306a36Sopenharmony_ci [ICE_EEP2_ACLINK] = 0x02, /* ACLINK, packed */ 4562306a36Sopenharmony_ci [ICE_EEP2_I2S] = 0x00, /* - */ 4662306a36Sopenharmony_ci [ICE_EEP2_SPDIF] = 0x00, /* - */ 4762306a36Sopenharmony_ci [ICE_EEP2_GPIO_DIR] = 0xff, 4862306a36Sopenharmony_ci [ICE_EEP2_GPIO_DIR1] = 0xff, 4962306a36Sopenharmony_ci [ICE_EEP2_GPIO_DIR2] = 0x00, /* - */ 5062306a36Sopenharmony_ci [ICE_EEP2_GPIO_MASK] = 0xff, 5162306a36Sopenharmony_ci [ICE_EEP2_GPIO_MASK1] = 0xff, 5262306a36Sopenharmony_ci [ICE_EEP2_GPIO_MASK2] = 0x00, /* - */ 5362306a36Sopenharmony_ci [ICE_EEP2_GPIO_STATE] = 0x00, 5462306a36Sopenharmony_ci [ICE_EEP2_GPIO_STATE1] = 0x00, 5562306a36Sopenharmony_ci [ICE_EEP2_GPIO_STATE2] = 0x00, /* - */ 5662306a36Sopenharmony_ci}; 5762306a36Sopenharmony_ci 5862306a36Sopenharmony_cistatic const unsigned char sn25p_eeprom[] = { 5962306a36Sopenharmony_ci [ICE_EEP2_SYSCONF] = 0x01, /* clock 256, 1ADC, 2DACs */ 6062306a36Sopenharmony_ci [ICE_EEP2_ACLINK] = 0x02, /* ACLINK, packed */ 6162306a36Sopenharmony_ci [ICE_EEP2_I2S] = 0x00, /* - */ 6262306a36Sopenharmony_ci [ICE_EEP2_SPDIF] = 0x41, /* - */ 6362306a36Sopenharmony_ci [ICE_EEP2_GPIO_DIR] = 0xff, 6462306a36Sopenharmony_ci [ICE_EEP2_GPIO_DIR1] = 0xff, 6562306a36Sopenharmony_ci [ICE_EEP2_GPIO_DIR2] = 0x00, /* - */ 6662306a36Sopenharmony_ci [ICE_EEP2_GPIO_MASK] = 0xff, 6762306a36Sopenharmony_ci [ICE_EEP2_GPIO_MASK1] = 0xff, 6862306a36Sopenharmony_ci [ICE_EEP2_GPIO_MASK2] = 0x00, /* - */ 6962306a36Sopenharmony_ci [ICE_EEP2_GPIO_STATE] = 0x00, 7062306a36Sopenharmony_ci [ICE_EEP2_GPIO_STATE1] = 0x00, 7162306a36Sopenharmony_ci [ICE_EEP2_GPIO_STATE2] = 0x00, /* - */ 7262306a36Sopenharmony_ci}; 7362306a36Sopenharmony_ci 7462306a36Sopenharmony_ci 7562306a36Sopenharmony_ci/* entry point */ 7662306a36Sopenharmony_cistruct snd_ice1712_card_info snd_vt1720_mobo_cards[] = { 7762306a36Sopenharmony_ci { 7862306a36Sopenharmony_ci .subvendor = VT1720_SUBDEVICE_K8X800, 7962306a36Sopenharmony_ci .name = "Albatron K8X800 Pro II", 8062306a36Sopenharmony_ci .model = "k8x800", 8162306a36Sopenharmony_ci .chip_init = k8x800_init, 8262306a36Sopenharmony_ci .build_controls = k8x800_add_controls, 8362306a36Sopenharmony_ci .eeprom_size = sizeof(k8x800_eeprom), 8462306a36Sopenharmony_ci .eeprom_data = k8x800_eeprom, 8562306a36Sopenharmony_ci }, 8662306a36Sopenharmony_ci { 8762306a36Sopenharmony_ci .subvendor = VT1720_SUBDEVICE_ZNF3_150, 8862306a36Sopenharmony_ci .name = "Chaintech ZNF3-150", 8962306a36Sopenharmony_ci /* identical with k8x800 */ 9062306a36Sopenharmony_ci .chip_init = k8x800_init, 9162306a36Sopenharmony_ci .build_controls = k8x800_add_controls, 9262306a36Sopenharmony_ci .eeprom_size = sizeof(k8x800_eeprom), 9362306a36Sopenharmony_ci .eeprom_data = k8x800_eeprom, 9462306a36Sopenharmony_ci }, 9562306a36Sopenharmony_ci { 9662306a36Sopenharmony_ci .subvendor = VT1720_SUBDEVICE_ZNF3_250, 9762306a36Sopenharmony_ci .name = "Chaintech ZNF3-250", 9862306a36Sopenharmony_ci /* identical with k8x800 */ 9962306a36Sopenharmony_ci .chip_init = k8x800_init, 10062306a36Sopenharmony_ci .build_controls = k8x800_add_controls, 10162306a36Sopenharmony_ci .eeprom_size = sizeof(k8x800_eeprom), 10262306a36Sopenharmony_ci .eeprom_data = k8x800_eeprom, 10362306a36Sopenharmony_ci }, 10462306a36Sopenharmony_ci { 10562306a36Sopenharmony_ci .subvendor = VT1720_SUBDEVICE_9CJS, 10662306a36Sopenharmony_ci .name = "Chaintech 9CJS", 10762306a36Sopenharmony_ci /* identical with k8x800 */ 10862306a36Sopenharmony_ci .chip_init = k8x800_init, 10962306a36Sopenharmony_ci .build_controls = k8x800_add_controls, 11062306a36Sopenharmony_ci .eeprom_size = sizeof(k8x800_eeprom), 11162306a36Sopenharmony_ci .eeprom_data = k8x800_eeprom, 11262306a36Sopenharmony_ci }, 11362306a36Sopenharmony_ci { 11462306a36Sopenharmony_ci .subvendor = VT1720_SUBDEVICE_SN25P, 11562306a36Sopenharmony_ci .name = "Shuttle SN25P", 11662306a36Sopenharmony_ci .model = "sn25p", 11762306a36Sopenharmony_ci .chip_init = k8x800_init, 11862306a36Sopenharmony_ci .build_controls = k8x800_add_controls, 11962306a36Sopenharmony_ci .eeprom_size = sizeof(k8x800_eeprom), 12062306a36Sopenharmony_ci .eeprom_data = sn25p_eeprom, 12162306a36Sopenharmony_ci }, 12262306a36Sopenharmony_ci { } /* terminator */ 12362306a36Sopenharmony_ci}; 12462306a36Sopenharmony_ci 125