From mboxrd@z Thu Jan 1 00:00:00 1970 From: rpjday@crashcourse.ca (rpjday at crashcourse.ca) Date: Tue, 31 Jul 2018 10:24:49 -0400 Subject: how to best ioremap() the ranges part of a "simple-bus" device? Message-ID: <20180731102449.Horde.1z7io_6Z3o-YiVoMcjWtBTc@crashcourse.ca> To: kernelnewbies@lists.kernelnewbies.org List-Id: kernelnewbies.lists.kernelnewbies.org another (i suspect) fairly simple question, i've just never had the occasion to mess around in this part of the code. if i have a device tree source file containing the snippet: slave0: slave0-fubar at 90000000 { compatible = "simple-bus"; ranges = <0x0 0x90000000 0x10000000>; #address-cells = <1>; #size-cells = <1>; }; slave1: slave1-fubar at a0000000 { compatible = "simple-bus"; ranges = <0x0 0xa0000000 0x10000000>; #address-cells = <1>; #size-cells = <1>; }; those two ranges actually represent physical addresses within an FPGA and, when certain events occur, i want some driver code to read/write some registers in slave0's address space, so obviously i'll need to access that device tree entry and effectively ioremap() slave0's physical address to a usable virtual address. is there a canonical way to do this? short of manually extracting the appropriate device tree node and reading that property and calling ioremap()? is there a wrapper for that sort of operation, which i imagine must be fairly common? oh, and a pointer to a good example in the current kernel source would, of course, be useful. rday