2014-05-06 5 views
6

मैं linux डिवाइस के पेड़ के बारे में सीखने किया गया है और हम उन्हें उपयोग करने के लिए हमारे पुराने कोड के कुछ पोर्टिंग शुरू करने की कोशिश कर रहा हूँ। मैं GPIO नियंत्रक नोड के साथ परेशानी का एक छोटा सा आ रही हैं:लिनक्स डिवाइस ट्री सहायता (GPIO नियंत्रक/बीच में आता है)

gpio1: [email protected] { 
    #gpio-cells = <2>; 
    compatible = "cavium,octeon-3860-gpio"; 
    reg = <0xc00 0x100>; 
    gpio-controller; 
    /* Interrupts are specified by two parts: 
    * 1) GPIO pin number (0..15) 
    * 2) Triggering (1 - edge rising 
    *    2 - edge falling 
    *    4 - level active high 
    *    8 - level active low) 
    */ 
    interrupt-controller; 
    interrupt-cells = <2>; 
    interrupts = <0 24>, <1 25>, <2 26>, <3 27>; 

};

मैं तथापि, यह लग रहा है अपनी तरह ही कभी मानचित्रण GPIO पिन करने के लिए कुछ IRQs मैप करने के लिए कोशिश कर रहा हूँ, पहले एक < 0 24> आईआरक्यू 24 पिन 0. मैं स्रोत कोड को देखा GPIO के लिए और यह does not की तरह लग हालांकि डिवाइस पेड़ बाइंडिंग पाठ फ़ाइल संकेत करने लगता है यह, कभी 'बीच में आता है' के interate होगा कि वह ऐसा करेगा (devicetree/बाइंडिंग/GPIO/cavium-octeon-gpio.txt)। किसी को पता है मैं कैसे अलग GPIO पिन करने के लिए interupts के एक मुट्ठी भर मैप कर सकते हैं?

उत्तर

1

मैं अपने मशीन से परिचित नहीं हूँ, लेकिन अगर तुम यहाँ देखो:

http://www.devicetree.org/Device_Tree_Usage#How_Interrupts_Work

आपको लगता है कि बाधा विनिर्देशक नोड के व्यवधान नियंत्रक जिसमें वे परिभाषित कर रहे हैं के लिए कर रहे हैं देखेंगे (यानी माता-पिता बाधा नियंत्रक), और नहीं नोड के लिए ही।

चूंकि आप यह भी नहीं दिखा रहे हैं कि आप वास्तव में कहां और अंतराल (पिन, ट्रिगर) सक्षम करते हैं, मुझे लगता है कि आपको यह नहीं पता था।

तो gpio1 की बाधा नियंत्रक नोड क्या कैसा दिखता है?

क्या यह वास्तव में फ़ॉर्म (पिन, irq) में एक ही स्रोत से एकाधिक इंटरप्ट प्राप्त करने की अपेक्षा करता है?

उदाहरण के लिए, am335x पर, gpio1 पर सभी इंटरप्ट्स ओएमएपी 35 आईएनटीसी नियंत्रक पर एक विशिष्ट इंडेक्स में मैप किए जाते हैं, जिसका अर्थ है कि जीपीओ 1 नोड में केवल 1 इंटरप्ट परिभाषित किया गया है, जो आईएनटीसी को संकेत देता है कि gpio1 पर कोई बाधा उत्पन्न हुई है या नहीं।

4

जीपीओ हैंडलिंग अभी भी प्लेटफॉर्म के बीच 100% समान नहीं है, इसलिए मैं आपको इसकी जानकारी दूंगा, और आपको अपने प्लेटफॉर्म को अनुकूलित करने की आवश्यकता हो सकती है (एक डीटीएस खोजें जो समान या समान एसओसी का उपयोग करता है)।

पहले:: छोड़ दो gpio1 अकेले नोड मेरे मंच फ्रीस्केल imx.6 है यहाँ इस यह का सार है। (यह शायद आपके अपस्ट्रीम विक्रेता से प्राप्त डीटीएसआई में सही ढंग से स्थापित किया गया है)

दूसरा: यदि आप चाहते हैं .e.g। GPIO 1 15, व्यवधान, डिवाइस नोड आप GPIO बाधा का उपभोग करना चाहते हैं में सक्रिय उच्च होने के लिए जोड़ने

interrupt-parent = <&gpio1>; 
interrupts = <15 IRQ_TYPE_LEVEL_HIGH>; 
उदाहरण के लिए

: मेहराब/हाथ/बूट/डीटीएस/imx6qdl-gw52xx.dtsi

से
touchscreen: [email protected] { 
     compatible = "eeti,egalax_ts"; 
     reg = <0x04>; 
     interrupt-parent = <&gpio7>; 
     interrupts = <12 2>; 
     wakeup-gpios = <&gpio7 12 GPIO_ACTIVE_LOW>; 
}; 
संबंधित मुद्दे