/* * I2S MEMS microphone driver for InvenSense ICS-43432 * * - Non configurable. * - I2S interface, 64 BCLs per frame, 32 bits per channel, 24 bit data * * Copyright (c) 2015 Axis Communications AB * * Licensed under GPL v2. */ #include #include #include #include #include #include #include #include #include #define ICS43432_RATE_MIN 7190 /* Hz, from data sheet */ #define ICS43432_RATE_MAX 52800 /* Hz, from data sheet */ #define ICS43432_FORMATS (SNDRV_PCM_FMTBIT_S24_LE | SNDRV_PCM_FMTBIT_S32) static struct snd_soc_dai_driver ics43432_dai = { .name = "ics43432-hifi", .capture = { .stream_name = "Capture", .channels_min = 1, .channels_max = 2, .rate_min = ICS43432_RATE_MIN, .rate_max = ICS43432_RATE_MAX, .rates = SNDRV_PCM_RATE_CONTINUOUS, .formats = ICS43432_FORMATS, }, }; static struct snd_soc_codec_driver ics43432_codec_driver = { }; static int ics43432_probe(struct platform_device *pdev) { return snd_soc_register_codec(&pdev->dev, &ics43432_codec_driver, &ics43432_dai, 1); } static int ics43432_remove(struct platform_device *pdev) { snd_soc_unregister_codec(&pdev->dev); return 0; } #ifdef CONFIG_OF static const struct of_device_id ics43432_ids[] = { { .compatible = "invensense,ics43432", }, { } }; MODULE_DEVICE_TABLE(of, ics43432_ids); #endif static struct platform_driver ics43432_driver = { .driver = { .name = "ics43432", .of_match_table = of_match_ptr(ics43432_ids), }, .probe = ics43432_probe, .remove = ics43432_remove, }; module_platform_driver(ics43432_driver); MODULE_DESCRIPTION("ASoC ICS43432 driver"); MODULE_AUTHOR("Ricard Wanderlof "); MODULE_LICENSE("GPL v2"); .cgi/linux/net-next.git/tree/?h=nds-private-remove&id=610e89e05c3f28a7394935aa6b91f99548c4fd3c'>treecommitdiff
diff options
context:
space:
mode:
authorSaeed Mahameed <saeedm@mellanox.com>2016-12-28 14:58:41 +0200
committerDavid S. Miller <davem@davemloft.net>2016-12-28 14:36:53 -0500
commit610e89e05c3f28a7394935aa6b91f99548c4fd3c (patch)
tree2e065bb397be91c7052de7dd66be0487a6199729
parent4525a45bfad55a00ef218c5fbe5d98a3d8170bf5 (diff)
net/mlx5e: Don't sync netdev state when not registered
Skip setting netdev vxlan ports and netdev rx_mode on driver load when netdev is not yet registered. Synchronizing with netdev state is needed only on reset flow where the netdev remains registered for the whole reset period. This also fixes an access before initialization of net_device.addr_list_lock - which for some reason initialized on register_netdev - where we queued set_rx_mode work on driver load before netdev registration. Fixes: 26e59d8077a3 ("net/mlx5e: Implement mlx5e interface attach/detach callbacks") Signed-off-by: Saeed Mahameed <saeedm@mellanox.com> Reported-by: Sebastian Ott <sebott@linux.vnet.ibm.com> Reviewed-by: Mohamad Haj Yahia <mohamad@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/ethernet/mellanox/mlx5/core/en_main.c19
1 files changed, 12 insertions, 7 deletions
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c