2019-05-30 11:50:11 +00:00
|
|
|
/* SPDX-License-Identifier: GPL-2.0 */
|
|
|
|
/*
|
|
|
|
* soc-intel-quirks.h - prototypes for quirk autodetection
|
|
|
|
*
|
|
|
|
* Copyright (c) 2019, Intel Corporation.
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef _SND_SOC_INTEL_QUIRKS_H
|
|
|
|
#define _SND_SOC_INTEL_QUIRKS_H
|
|
|
|
|
|
|
|
#if IS_ENABLED(CONFIG_X86)
|
|
|
|
|
|
|
|
#include <asm/cpu_device_id.h>
|
|
|
|
#include <asm/intel-family.h>
|
|
|
|
#include <asm/iosf_mbi.h>
|
|
|
|
|
|
|
|
#define ICPU(model) { X86_VENDOR_INTEL, 6, model, X86_FEATURE_ANY, }
|
|
|
|
|
|
|
|
#define SOC_INTEL_IS_CPU(soc, type) \
|
|
|
|
static inline bool soc_intel_is_##soc(void) \
|
|
|
|
{ \
|
|
|
|
static const struct x86_cpu_id soc##_cpu_ids[] = { \
|
|
|
|
ICPU(type), \
|
|
|
|
{} \
|
|
|
|
}; \
|
|
|
|
const struct x86_cpu_id *id; \
|
|
|
|
\
|
|
|
|
id = x86_match_cpu(soc##_cpu_ids); \
|
|
|
|
if (id) \
|
|
|
|
return true; \
|
|
|
|
return false; \
|
|
|
|
}
|
|
|
|
|
|
|
|
SOC_INTEL_IS_CPU(byt, INTEL_FAM6_ATOM_SILVERMONT);
|
|
|
|
SOC_INTEL_IS_CPU(cht, INTEL_FAM6_ATOM_AIRMONT);
|
|
|
|
SOC_INTEL_IS_CPU(apl, INTEL_FAM6_ATOM_GOLDMONT);
|
|
|
|
SOC_INTEL_IS_CPU(glk, INTEL_FAM6_ATOM_GOLDMONT_PLUS);
|
sound updates for 5.4
As shown in diffstat and logs, it was again a busy development
cycle at this time, too. The most significant changes are still
on-going refactoring / modernization works for ASoC core and
drivers, but there are lots of other changes as well. Here we go,
some highlights below:
ASoC:
- Quite lots of cleanup / refactoring of ASoC core and APIs;
most of them are systematic, but also including cleanups and
modernization
- A bulk of updates for some ASoC platforms, Freescale, sunxi and
Intel SST/SOF
- Initial support for Sound Open Firmware on i.MX8
- Removal of deprecated w90x900 and nuc900 drivers
- New support for Cirrus Logic CS47L15 and CS47L92, Freescale i.MX
7ULP and 8MQ, Meson G12A and NXP UDA1334
USB-audio:
- More validations of descriptor units for hardening against bugs
reported by fuzzers
- PCM device assignment workaround for a past call-order change
- Scarlett Gen2 mixer interface, a few more more quirks
HD-audio:
- Support for audio component with AMD/ATI and Nvidia HDMI codecs
- Clean up HD-audio core and remove indirect access ops for Intel SOF
- DMIC detection at probe; it would make systems automatically falling
back to SST/SOF driver on devices that need DMIC handling.
Needs a new Kconfig to set, and beware that it's still new and a bit
experimental
FireWire:
- Lots of code refactoring and cleanups
-----BEGIN PGP SIGNATURE-----
iQJCBAABCAAsFiEEIXTw5fNLNI7mMiVaLtJE4w1nLE8FAl1/dEsOHHRpd2FpQHN1
c2UuZGUACgkQLtJE4w1nLE+2WA//YoEoxXgx/Aok5eJfKPSn0Pd7HccvU53Q9Syx
z8DaUSUbd6S7g9P8zzXm1l5bIfAur1FQDkvfYrA23iDhixna/w+jnkeUbRBCFbnB
tdUX4mMBMO/wfJZ5I1Amw9OaKsEaWoSaw8EezgWLkQUkVjfAVLitz/oH4qxlitxv
ssOP2pLNaNKMqJjgV49DJ6wXjAFnndB+nSoEGzDkoDYv17VeahDG6XRPRGvmf6ZM
06w2KfGJqstNniH5Cw2us0GQf1UD6Ra1aZJRekoOjih5PeX8/Mjl+6HgQVwEZwZY
ZnwAgJaL/ujUPywJO9cBlMv2yiePMqgXA8b5sNO1HJdzwIP7wAjD/bbY6V9+8IDZ
zQpqHWen7B/PySLym7y19QvVZYmc+y43vJJev9M6kc0LofOltWmeeAUr5x3gktWx
WuwN6KEHP5NA2cwkc8mW1LwiUavon1hl7PGOVqx7R3k4upPAKY1ZXBHNXgN2+M5N
lX9fbAMLB2W0cPkD/Ob29JP04qDxmLT+nhHNh2lzSQBlHHpsuVUyGvJH4PwOWnTb
tk1xTPxF+zVaVTV3TUGHziiK98PHY/Sj1hlyvKGuBiD+efvvnXAVkivjL9Egj4aq
QGGGshTdOi7l7Anon3TEbHA8cFNkttRukKq1bpskZHydlaQtTOW0CEotRmvEJfpR
ghQn5mY=
=/+1Q
-----END PGP SIGNATURE-----
Merge tag 'sound-5.4-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
Pull sound updates from Takashi Iwai:
"As shown in diffstat and logs, it was again a busy development cycle
at this time, too. The most significant changes are still on-going
refactoring / modernization works for ASoC core and drivers, but there
are lots of other changes as well. Here we go, some highlights below:
ASoC:
- Quite a lot of cleanup / refactoring of ASoC core and APIs; most of
them are systematic, but also including cleanups and modernization
- A bulk of updates for some ASoC platforms, Freescale, sunxi and
Intel SST/SOF
- Initial support for Sound Open Firmware on i.MX8
- Removal of deprecated w90x900 and nuc900 drivers
- New support for Cirrus Logic CS47L15 and CS47L92, Freescale i.MX
7ULP and 8MQ, Meson G12A and NXP UDA1334
USB-audio:
- More validations of descriptor units for hardening against bugs
reported by fuzzers
- PCM device assignment workaround for a past call-order change
- Scarlett Gen2 mixer interface, a few more more quirks
HD-audio:
- Support for audio component with AMD/ATI and Nvidia HDMI codecs
- Clean up HD-audio core and remove indirect access ops for Intel SOF
- DMIC detection at probe; it would make systems automatically
falling back to SST/SOF driver on devices that need DMIC handling.
Needs a new Kconfig to set, and beware that it's still new and a
bit experimental
FireWire:
- Lots of code refactoring and cleanups"
* tag 'sound-5.4-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (521 commits)
ASoC: sdm845: remove unneeded semicolon
ASoC: fsl_sai: Implement set_bclk_ratio
ASoC: dmaengine: Replace strncpy() with strscpy_pad() for pcm->name
ASoC: wcd9335: remove redundant use of ret variable
ALSA: firewire-tascam: check intermediate state of clock status and retry
ALSA: firewire-tascam: handle error code when getting current source of clock
ASoC: hdmi-codec: Add an op to set callback function for plug event
ASoC: rt5677: keep analog power register at SND_SOC_BIAS_OFF
ASoC: rt5677: Remove magic number register writes
ASoC: soc-core: self contained soc_unbind_aux_dev()
ASoC: soc-core: add soc_unbind_aux_dev()
ASoC: soc-core: self contained soc_bind_aux_dev()
ASoC: soc-core: move soc_probe_link_dais() next to soc_remove_link_dais()
ASoC: soc-core: self contained soc_probe_link_dais()
ASoC: soc-core: add new soc_link_init()
ASoC: soc-core: move soc_probe_dai() next to soc_remove_dai()
ASoC: soc-core: self contained soc_remove_link_dais()
ASoC: soc-core: self contained soc_remove_link_components()
ASoC: soc-core: self contained soc_probe_link_components()
ASoC: rt1308: make array pd static const, makes object smaller
...
2019-09-18 00:43:33 +00:00
|
|
|
SOC_INTEL_IS_CPU(cml, INTEL_FAM6_KABYLAKE_L);
|
2019-05-30 11:50:11 +00:00
|
|
|
|
|
|
|
static inline bool soc_intel_is_byt_cr(struct platform_device *pdev)
|
|
|
|
{
|
|
|
|
struct device *dev = &pdev->dev;
|
|
|
|
int status = 0;
|
|
|
|
|
|
|
|
if (!soc_intel_is_byt())
|
|
|
|
return false;
|
|
|
|
|
|
|
|
if (iosf_mbi_available()) {
|
|
|
|
u32 bios_status;
|
|
|
|
|
|
|
|
status = iosf_mbi_read(BT_MBI_UNIT_PMC, /* 0x04 PUNIT */
|
|
|
|
MBI_REG_READ, /* 0x10 */
|
|
|
|
0x006, /* BIOS_CONFIG */
|
|
|
|
&bios_status);
|
|
|
|
|
|
|
|
if (status) {
|
|
|
|
dev_err(dev, "could not read PUNIT BIOS_CONFIG\n");
|
|
|
|
} else {
|
|
|
|
/* bits 26:27 mirror PMIC options */
|
|
|
|
bios_status = (bios_status >> 26) & 3;
|
|
|
|
|
|
|
|
if (bios_status == 1 || bios_status == 3) {
|
|
|
|
dev_info(dev, "Detected Baytrail-CR platform\n");
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
dev_info(dev, "BYT-CR not detected\n");
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
dev_info(dev, "IOSF_MBI not available, no BYT-CR detection\n");
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!platform_get_resource(pdev, IORESOURCE_IRQ, 5)) {
|
|
|
|
/*
|
|
|
|
* Some devices detected as BYT-T have only a single IRQ listed,
|
|
|
|
* causing platform_get_irq with index 5 to return -ENXIO.
|
|
|
|
* The correct IRQ in this case is at index 0, as on BYT-CR.
|
|
|
|
*/
|
|
|
|
dev_info(dev, "Falling back to Baytrail-CR platform\n");
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
#else
|
|
|
|
|
|
|
|
static inline bool soc_intel_is_byt_cr(struct platform_device *pdev)
|
|
|
|
{
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
static inline bool soc_intel_is_byt(void)
|
|
|
|
{
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
static inline bool soc_intel_is_cht(void)
|
|
|
|
{
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
static inline bool soc_intel_is_apl(void)
|
|
|
|
{
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
static inline bool soc_intel_is_glk(void)
|
|
|
|
{
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
2019-08-15 06:51:49 +00:00
|
|
|
static inline bool soc_intel_is_cml(void)
|
|
|
|
{
|
|
|
|
return false;
|
|
|
|
}
|
2019-05-30 11:50:11 +00:00
|
|
|
#endif
|
|
|
|
|
|
|
|
#endif /* _SND_SOC_INTEL_QUIRKS_H */
|