*参照元 [#w7a4c3cf] #backlinks *説明 [#ide6c469] -パス: [[linux-4.4.1/sound/soc/soc-io.c]] -FIXME: これは何? --説明 -レジスタに write アクセスする必要があるかどうか判定する。 --現在のレジスタの値 old と、書き込む値 val で更新した後の値 new が異なっていれば、write アクセスする必要がある。 --old と new が一致していたら、write アクセスする必要はない。 **引数 [#uc3badf2] -struct snd_soc_component *component -- --コンポーネント。何らかのレジスタ領域を持っている。 --[[linux-4.4.1/snd_soc_component]] -unsigned int reg -- --レジスタアドレス -unsigned int mask -- --マスク -unsigned int value -- --書き込む値 **返り値 [#nac26bc1] -int -- --write する必要があれば 1、必要がなければ 0 **参考 [#w197d5ff] *実装 [#d3dd8380] /** * snd_soc_component_test_bits - Test register for change * @component: component * @reg: Register to test * @mask: Mask that specifies which bits to test * @value: Value to test against * * Tests a register with a new value and checks if the new value is * different from the old value. * * Return: 1 for change, otherwise 0. */ int snd_soc_component_test_bits(struct snd_soc_component *component, unsigned int reg, unsigned int mask, unsigned int value) { unsigned int old, new; int ret; ret = snd_soc_component_read(component, reg, &old); if (ret < 0) return ret; - -レジスタの値を読み出す。 --[[linux-4.4.1/snd_soc_component_read()]] new = (old & ~mask) | value; -value を書き込んだ後の値を求める。 return old != new; } EXPORT_SYMBOL_GPL(snd_soc_component_test_bits); -GPL ライセンスのモジュールにのみシンボルを公開する。 --[[linux-4.4.1/EXPORT_SYMBOL_GPL()]] *コメント [#wa6a948a]