/* * SiRF Audio port driver * * Copyright (c) 2011 Cambridge Silicon Radio Limited, a CSR plc group company. * * Licensed under GPLv2 or later. */ #include #include #include struct sirf_audio_port { struct regmap *regmap; struct snd_dmaengine_dai_dma_data playback_dma_data; struct snd_dmaengine_dai_dma_data capture_dma_data; }; static int sirf_audio_port_dai_probe(struct snd_soc_dai *dai) { struct sirf_audio_port *port = snd_soc_dai_get_drvdata(dai); snd_soc_dai_init_dma_data(dai, &port->playback_dma_data, &port->capture_dma_data); return 0; } static struct snd_soc_dai_driver sirf_audio_port_dai = { .probe = sirf_audio_port_dai_probe, .name = "sirf-audio-port", .id = 0, .playback = { .channels_min = 2, .channels_max = 2, .rates = SNDRV_PCM_RATE_48000, .formats = SNDRV_PCM_FMTBIT_S16_LE, }, .capture = { .channels_min = 1, .channels_max = 2, .rates = SNDRV_PCM_RATE_48000, .formats = SNDRV_PCM_FMTBIT_S16_LE, }, }; static const struct snd_soc_component_driver sirf_audio_port_component = { .name = "sirf-audio-port", }; static int sirf_audio_port_probe(struct platform_device *pdev) { int ret; struct sirf_audio_port *port; port = devm_kzalloc(&pdev->dev, sizeof(struct sirf_audio_port), GFP_KERNEL); if (!port) return -ENOMEM; ret = devm_snd_soc_register_component(&pdev->dev, &sirf_audio_port_component, &sirf_audio_port_dai, 1); if (ret) return ret; platform_set_drvdata(pdev, port); return devm_snd_dmaengine_pcm_register(&pdev->dev, NULL, 0); } static const struct of_device_id sirf_audio_port_of_match[] = { { .compatible = "sirf,audio-port", }, {} }; MODULE_DEVICE_TABLE(of, sirf_audio_port_of_match); static struct platform_driver sirf_audio_port_driver = { .driver = { .name = "sirf-audio-port", .of_match_table = sirf_audio_port_of_match, }, .probe = sirf_audio_port_probe, }; module_platform_driver(sirf_audio_port_driver); MODULE_DESCRIPTION("SiRF Audio Port driver"); MODULE_AUTHOR("RongJun Ying "); MODULE_LICENSE("GPL v2"); et/sunrpc/auth_gss/gss_krb5_unseal.c?id=79c6f448c8b79c321e4a1f31f98194e4f6b6cae7'>diff
diff options
context:
space:
mode:
authorSteven Rostedt (VMware) <rostedt@goodmis.org>2017-01-30 19:27:10 -0500
committerSteven Rostedt (VMware) <rostedt@goodmis.org>2017-01-31 09:13:49 -0500
commit79c6f448c8b79c321e4a1f31f98194e4f6b6cae7 (patch)
tree370efda701f03cccf21e02bb1fdd3b852547d75c /net/sunrpc/auth_gss/gss_krb5_unseal.c
parent0c744ea4f77d72b3dcebb7a8f2684633ec79be88 (diff)
tracing: Fix hwlat kthread migration
The hwlat tracer creates a kernel thread at start of the tracer. It is pinned to a single CPU and will move to the next CPU after each period of running. If the user modifies the migration thread's affinity, it will not change after that happens. The original code created the thread at the first instance it was called, but later was changed to destroy the thread after the tracer was finished, and would not be created until the next instance of the tracer was established. The code that initialized the affinity was only called on the initial instantiation of the tracer. After that, it was not initialized, and the previous affinity did not match the current newly created one, making it appear that the user modified the thread's affinity when it did not, and the thread failed to migrate again. Cc: stable@vger.kernel.org Fixes: 0330f7aa8ee6 ("tracing: Have hwlat trace migrate across tracing_cpumask CPUs") Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
Diffstat (limited to 'net/sunrpc/auth_gss/gss_krb5_unseal.c')