3

ARM+FPGA SOC システム用のデバイス ドライバー カーネル モジュールの機能をテストするためのカーネル モジュールを作成しています。私のアプローチでは、デバイス ツリーを照会して、デバイス ドライバーが使用している割り込みを見つけます。デバイス ドライバー自体では、プラットフォーム ドライバーを使用して登録platform_driver_registerし、.probe関数では、platform_device*ポインターを含むポインターを渡しdeviceます。of_match_deviceこれで、およびを呼び出してirq_of_parse_and_map、irq 番号を取得できます。

テスト モジュールでこの方法でデバイス ツリーを照会するためだけに、2 番目のプラットフォーム ドライバーを登録したくありません。デバイスツリーを照会できる他の方法はありますか (おそらく、より直接的に、おそらく名前で?)

4

1 に答える 1

3

これは私がこれまでに見つけたものであり、うまくいくようです。of_find_compatible_node私がしたいことをします。を取得したらdevice_node*、呼び出すことができますirq_of_parse_and_map(of_irq_get_bynameコンパイルされていないようです)。次のようなものを使用できます。

#include <linux/of.h>
#include <linux/of_irq.h>
....
int get_dut_irq(char* dev_compatible_name)
{
    struct device_node* dev_node;
    int irq = -1;
    dev_node = of_find_compatible_node(NULL, NULL, dev_compatible_name);
    if (!dev_node)
        return -1;
    irq = irq_of_parse_and_map(dev_node, 0);
    of_node_put(dev_node);
    return irq;
}
于 2014-11-06T19:01:06.700 に答える