aboutsummaryrefslogtreecommitdiffstats
path: root/include/net/netfilter
AgeCommit message (Expand)Author
2011-01-12netfilter: fix compilation when conntrack is disabled but tproxy is enabledKOVACS Krisztian
2011-01-06netfilter: fix the race when initializing nf_ct_expect_hash_rndChangli Gao
2010-10-23Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6Linus Torvalds
2010-10-21tproxy: added IPv6 socket lookup function to nf_tproxy_coreBalazs Scheidler
2010-10-21tproxy: split off ipv6 defragmentation to a separate moduleBalazs Scheidler
2010-10-21tproxy: add lookup type checks for UDP in nf_tproxy_get_sock_v4()Balazs Scheidler
2010-10-21tproxy: kick out TIME_WAIT sockets in case a new connection comes in with the...Balazs Scheidler
2010-10-19netfilter: ctnetlink: add expectation deletion eventsPablo Neira Ayuso
2010-10-04netfilter: add missing xt_log.h filePatrick McHardy
2010-10-04netfilter: nf_nat: make find/put staticStephen Hemminger
2010-09-28netfilter: ctnetlink: add support for user-space expectation helpersPablo Neira Ayuso
2010-09-22netfilter: ctnetlink: allow to specify the expectation flagsPablo Neira Ayuso
2010-08-19net/netfilter: __rcu annotationsArnd Bergmann
2010-08-02netfilter: nf_nat: make unique_tuple return voidChangli Gao
2010-08-02netfilter: nf_conntrack_extend: introduce __nf_ct_ext_exist()Changli Gao
2010-07-15nfnetlink_log: do not expose NFULNL_COPY_DISABLED to user-spacePablo Neira Ayuso
2010-06-25netfilter: xt_connbytes: Force CT accounting to be enabledTim Gardner
2010-06-17netfilter: nf_nat: support user-specified SNAT rules in LOCAL_INPatrick McHardy
2010-06-15Merge branch 'master' of /repos/git/net-next-2.6Patrick McHardy
2010-06-11pkt_sched: gen_kill_estimator() rcu fixesEric Dumazet
2010-06-09netfilter: nf_conntrack: per_cpu untrackingEric Dumazet
2010-06-08netfilter: nf_conntrack: IPS_UNTRACKED bitEric Dumazet
2010-06-08netfilter: xt_rateest: Better struct xt_rateest layoutEric Dumazet
2010-06-02net: CONFIG_NET_NS reductionEric Dumazet
2010-05-20netfilter: nf_conntrack: fix a race in __nf_conntrack_confirm against nf_ct_g...Joerg Marx
2010-03-30include cleanup: Update gfp.h and slab.h includes to prepare for breaking imp...Tejun Heo
2010-02-18netfilter: nf_defrag_ipv4: fix compilation error with NF_CONNTRACK=nPatrick McHardy
2010-02-15netfilter: nf_conntrack: add support for "conntrack zones"Patrick McHardy
2010-02-15netfilter: nf_conntrack: pass template to l4proto ->error() handlerPatrick McHardy
2010-02-12netfilter: nf_conntrack: elegantly simplify nf_ct_exp_net()Alexey Dobriyan
2010-02-11netfilter: nf_conntrack_sip: add T.38 FAX supportPatrick McHardy
2010-02-11netfilter: nf_nat: support mangling a single TCP packet multiple timesPatrick McHardy
2010-02-11netfilter: nf_conntrack: show helper and class in /proc/net/nf_conntrack_expectPatrick McHardy
2010-02-03netfilter: xtables: add CT targetPatrick McHardy
2010-02-03netfilter: nf_conntrack: support conntrack templatesPatrick McHardy
2010-02-03netfilter: ctnetlink: support selective event deliveryPatrick McHardy
2010-02-03netfilter: nf_conntrack: split up IPCT_STATUS eventPatrick McHardy
2010-02-03netfilter: ctnetlink: only assign helpers for matching protocolsPatrick McHardy
2009-12-16Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6Linus Torvalds
2009-12-15ipv6: reassembly: use seperate reassembly queues for conntrack and local deli...Patrick McHardy
2009-12-14Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/...Linus Torvalds
2009-11-06Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/ne...David S. Miller
2009-11-06netfilter: nf_nat: fix NAT issue in 2.6.30.4+Jozsef Kadlecsik
2009-11-04net: cleanup include/netEric Dumazet
2009-10-03this_cpu: Use this_cpu ops for network statisticsChristoph Lameter
2009-09-10Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/kaber/...David S. Miller
2009-08-25netfilter: nfnetlink: constify message attributes and headersPatrick McHardy
2009-08-17net: restore gnet_stats_basic to previous definitionEric Dumazet
2009-06-29netfilter: tcp conntrack: fix unacknowledged data detection with NATPatrick McHardy
2009-06-13netfilter: conntrack: optional reliable conntrack event deliveryPablo Neira Ayuso
p">) { struct snd_soc_pcm_runtime *rtd = substream->private_data; int i, ret; for (i = 0; i < rtd->num_codecs; i++) { struct snd_soc_dai *codec_dai = rtd->codec_dais[i]; /* pll from mclk 12.288M */ ret = snd_soc_dai_set_pll(codec_dai, 0, 0, MCLK_FOR_CODECS, params_rate(params) * 512); if (ret) return ret; /* sysclk from pll */ ret = snd_soc_dai_set_sysclk(codec_dai, 1, params_rate(params) * 512, SND_SOC_CLOCK_IN); if (ret) return ret; } return 0; } static const struct snd_soc_ops mt8173_rt5650_rt5676_ops = { .hw_params = mt8173_rt5650_rt5676_hw_params, }; static struct snd_soc_jack mt8173_rt5650_rt5676_jack; static int mt8173_rt5650_rt5676_init(struct snd_soc_pcm_runtime *runtime) { struct snd_soc_card *card = runtime->card; struct snd_soc_component *component = runtime->codec_dais[0]->component; struct snd_soc_component *component_sub = runtime->codec_dais[1]->component; int ret; rt5645_sel_asrc_clk_src(component, RT5645_DA_STEREO_FILTER | RT5645_AD_STEREO_FILTER, RT5645_CLK_SEL_I2S1_ASRC); rt5677_sel_asrc_clk_src(component_sub, RT5677_DA_STEREO_FILTER | RT5677_AD_STEREO1_FILTER, RT5677_CLK_SEL_I2S1_ASRC); rt5677_sel_asrc_clk_src(component_sub, RT5677_AD_STEREO2_FILTER | RT5677_I2S2_SOURCE, RT5677_CLK_SEL_I2S2_ASRC); /* enable jack detection */ ret = snd_soc_card_jack_new(card, "Headset Jack", SND_JACK_HEADPHONE | SND_JACK_MICROPHONE | SND_JACK_BTN_0 | SND_JACK_BTN_1 | SND_JACK_BTN_2 | SND_JACK_BTN_3, &mt8173_rt5650_rt5676_jack, NULL, 0); if (ret) { dev_err(card->dev, "Can't new Headset Jack %d\n", ret); return ret; } return rt5645_set_jack_detect(component, &mt8173_rt5650_rt5676_jack, &mt8173_rt5650_rt5676_jack, &mt8173_rt5650_rt5676_jack); } static struct snd_soc_dai_link_component mt8173_rt5650_rt5676_codecs[] = { { .dai_name = "rt5645-aif1", }, { .dai_name = "rt5677-aif1", }, }; enum { DAI_LINK_PLAYBACK, DAI_LINK_CAPTURE, DAI_LINK_HDMI, DAI_LINK_CODEC_I2S, DAI_LINK_HDMI_I2S, DAI_LINK_INTERCODEC }; /* Digital audio interface glue - connects codec <---> CPU */ static struct snd_soc_dai_link mt8173_rt5650_rt5676_dais[] = { /* Front End DAI links */ [DAI_LINK_PLAYBACK] = { .name = "rt5650_rt5676 Playback", .stream_name = "rt5650_rt5676 Playback", .cpu_dai_name = "DL1", .codec_name = "snd-soc-dummy", .codec_dai_name = "snd-soc-dummy-dai", .trigger = {SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, .dynamic = 1, .dpcm_playback = 1, }, [DAI_LINK_CAPTURE] = { .name = "rt5650_rt5676 Capture", .stream_name = "rt5650_rt5676 Capture", .cpu_dai_name = "VUL", .codec_name = "snd-soc-dummy", .codec_dai_name = "snd-soc-dummy-dai", .trigger = {SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, .dynamic = 1, .dpcm_capture = 1, }, [DAI_LINK_HDMI] = { .name = "HDMI", .stream_name = "HDMI PCM", .cpu_dai_name = "HDMI", .codec_name = "snd-soc-dummy", .codec_dai_name = "snd-soc-dummy-dai", .trigger = {SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST}, .dynamic = 1, .dpcm_playback = 1, }, /* Back End DAI links */ [DAI_LINK_CODEC_I2S] = { .name = "Codec", .cpu_dai_name = "I2S", .no_pcm = 1, .codecs = mt8173_rt5650_rt5676_codecs, .num_codecs = 2, .init = mt8173_rt5650_rt5676_init, .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBS_CFS, .ops = &mt8173_rt5650_rt5676_ops, .ignore_pmdown_time = 1, .dpcm_playback = 1, .dpcm_capture = 1, }, [DAI_LINK_HDMI_I2S] = { .name = "HDMI BE", .cpu_dai_name = "HDMIO", .no_pcm = 1, .codec_dai_name = "i2s-hifi", .dpcm_playback = 1, }, /* rt5676 <-> rt5650 intercodec link: Sets rt5676 I2S2 as master */ [DAI_LINK_INTERCODEC] = { .name = "rt5650_rt5676 intercodec", .stream_name = "rt5650_rt5676 intercodec", .cpu_dai_name = "snd-soc-dummy-dai", .platform_name = "snd-soc-dummy", .no_pcm = 1, .codec_dai_name = "rt5677-aif2", .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBM_CFM, }, }; static struct snd_soc_codec_conf mt8173_rt5650_rt5676_codec_conf[] = { { .name_prefix = "Sub", }, }; static struct snd_soc_card mt8173_rt5650_rt5676_card = { .name = "mtk-rt5650-rt5676", .owner = THIS_MODULE, .dai_link = mt8173_rt5650_rt5676_dais, .num_links = ARRAY_SIZE(mt8173_rt5650_rt5676_dais), .codec_conf = mt8173_rt5650_rt5676_codec_conf, .num_configs = ARRAY_SIZE(mt8173_rt5650_rt5676_codec_conf), .controls = mt8173_rt5650_rt5676_controls, .num_controls = ARRAY_SIZE(mt8173_rt5650_rt5676_controls), .dapm_widgets = mt8173_rt5650_rt5676_widgets, .num_dapm_widgets = ARRAY_SIZE(mt8173_rt5650_rt5676_widgets), .dapm_routes = mt8173_rt5650_rt5676_routes, .num_dapm_routes = ARRAY_SIZE(mt8173_rt5650_rt5676_routes), }; static int mt8173_rt5650_rt5676_dev_probe(struct platform_device *pdev) { struct snd_soc_card *card = &mt8173_rt5650_rt5676_card; struct device_node *platform_node; int i, ret; platform_node = of_parse_phandle(pdev->dev.of_node, "mediatek,platform", 0); if (!platform_node) { dev_err(&pdev->dev, "Property 'platform' missing or invalid\n"); return -EINVAL; } for (i = 0; i < card->num_links; i++) { if (mt8173_rt5650_rt5676_dais[i].platform_name) continue; mt8173_rt5650_rt5676_dais[i].platform_of_node = platform_node; } mt8173_rt5650_rt5676_codecs[0].of_node = of_parse_phandle(pdev->dev.of_node, "mediatek,audio-codec", 0); if (!mt8173_rt5650_rt5676_codecs[0].of_node) { dev_err(&pdev->dev, "Property 'audio-codec' missing or invalid\n"); return -EINVAL; } mt8173_rt5650_rt5676_codecs[1].of_node = of_parse_phandle(pdev->dev.of_node, "mediatek,audio-codec", 1); if (!mt8173_rt5650_rt5676_codecs[1].of_node) { dev_err(&pdev->dev, "Property 'audio-codec' missing or invalid\n"); return -EINVAL; } mt8173_rt5650_rt5676_codec_conf[0].of_node = mt8173_rt5650_rt5676_codecs[1].of_node; mt8173_rt5650_rt5676_dais[DAI_LINK_INTERCODEC].codec_of_node = mt8173_rt5650_rt5676_codecs[1].of_node; mt8173_rt5650_rt5676_dais[DAI_LINK_HDMI_I2S].codec_of_node = of_parse_phandle(pdev->dev.of_node, "mediatek,audio-codec", 2); if (!mt8173_rt5650_rt5676_dais[DAI_LINK_HDMI_I2S].codec_of_node) { dev_err(&pdev->dev, "Property 'audio-codec' missing or invalid\n"); return -EINVAL; } card->dev = &pdev->dev; ret = devm_snd_soc_register_card(&pdev->dev, card); if (ret) dev_err(&pdev->dev, "%s snd_soc_register_card fail %d\n", __func__, ret); return ret; } static const struct of_device_id mt8173_rt5650_rt5676_dt_match[] = { { .compatible = "mediatek,mt8173-rt5650-rt5676", }, { } }; MODULE_DEVICE_TABLE(of, mt8173_rt5650_rt5676_dt_match); static struct platform_driver mt8173_rt5650_rt5676_driver = { .driver = { .name = "mtk-rt5650-rt5676", .of_match_table = mt8173_rt5650_rt5676_dt_match, #ifdef CONFIG_PM .pm = &snd_soc_pm_ops, #endif }, .probe = mt8173_rt5650_rt5676_dev_probe, }; module_platform_driver(mt8173_rt5650_rt5676_driver); /* Module information */ MODULE_DESCRIPTION("MT8173 RT5650 and RT5676 SoC machine driver"); MODULE_AUTHOR("Koro Chen <koro.chen@mediatek.com>"); MODULE_LICENSE("GPL v2"); MODULE_ALIAS("platform:mtk-rt5650-rt5676");