platform_get_resource()
, शुरू पता और अंत पता जैसे उपकरण संसाधन की संरचना के बारे में जानकारी प्राप्त करने के लिए, एक ड्राइवर की __init
समारोह में प्रयोग किया जाता है आदेश खोजने के लिए संसाधन स्मृति आकार ताकि आप इसे स्मृति में मैप कर सकें।
platform_get_resource
समारोह की घोषणा के बाद
struct resource * platform_get_resource ( struct platform_device * dev,
unsigned int type,
unsigned int num);
पहले पैरामीटर समारोह जो डिवाइस हम में रुचि रखते हैं बताता है, तो यह जानकारी हमें जरूरत निकाल सकते हैं।
दूसरा पैरामीटर इस बात पर निर्भर करता है कि आप किस प्रकार के संसाधन को संभालने वाले हैं। अगर यह स्मृति है (या कुछ भी जिसे स्मृति के रूप में मैप किया जा सकता है :-)) तो यह IORESOURCE_MEM है। आप include/linux/ioport.h
पर सभी मैक्रो देख सकते हैं पिछले पैरामीटर के लिए, http://lwn.net/Articles/448499/ का कहना है:
पिछले पैरामीटर कहते हैं जो उस प्रकार के संसाधन शून्य पहले एक संकेत है के साथ, वांछित है। इस प्रकार, उदाहरण के लिए, एक ड्राइवर अपनी दूसरी MMIO क्षेत्र के साथ मिल सकता है:
r = platform_get_resource(pdev, IORESOURCE_MEM, 1);
वापसी मान एक प्रकार struct resource
वर के लिए सूचक है।
यहाँ एक उदाहरण
unsigned long *base_addr; /* Virtual Base Address */
struct resource *res; /* Device Resource Structure */
unsigned long remap_size; /* Device Memory Size */
static int __devinit bram_io_probe(struct platform_device *pdev)
{
res = platform_get_resource(pdev, IORESOURCE_MEM, 0); // get resource info
remap_size = res->end - res->start + 1; // get resource memory size
base_addr = ioremap(res->start, remap_size); // map it
}
है
स्रोत
2014-07-04 14:26:52