Lines Matching +full:memory +full:- +full:controller
3 (see Documentation/DMA-API-HOWTO.txt). They continue
5 must not use them. --davidm 00/12/12 ]
10 The AHA-1542 is a bus-master device, and your patch makes the driver give the
11 controller the physical address of the buffers, which is correct on x86
12 (because all bus master devices see the physical memory mappings directly).
15 at memory addresses, and in this case we actually want the third, the
16 so-called "bus address".
18 Essentially, the three ways of addressing memory are (this is "real memory",
19 that is, normal RAM--see later about other details):
21 - CPU untranslated. This is the "physical" address. Physical address
22 0 is what the CPU sees when it drives zeroes on the memory bus.
24 - CPU translated address. This is the "virtual" address, and is
28 - bus address. This is the address of memory as seen by OTHER devices,
30 addresses, with each device seeing memory in some device-specific way, but
33 external hardware sees the memory the same way.
37 because the memory and the devices share the same address space, and that is
41 CPU sees a memory map something like this (this is from memory):
43 0-2 GB "real memory"
44 2 GB-3 GB "system IO" (inb/out and similar accesses on x86)
45 3 GB-4 GB "IO memory" (shared memory over the IO bus)
48 the viewpoint of the devices, you have the reverse, and the physical memory
51 So when the CPU wants any bus master to write to physical memory 0, it
52 has to give the master address 0x80000000 as the memory address.
89 * the controller. The controller sees this directly.
100 /* get the address from the controller */
107 you want to give to the controller:
109 /* ask the controller to read the sense status into "sense_buffer" */
121 address is needed if you use memory mappings, for example, because the
122 "remap_pfn_range()" mm function wants the physical address of the memory to
123 be remapped as measured in units of pages, a.k.a. the pfn (the memory
128 only talks about "real memory", that is, CPU memory (RAM).
130 There is a completely different type of memory too, and that's the "shared
131 memory" on the PCI or ISA bus. That's generally not RAM (although in the case
135 This memory is called "PCI memory" or "shared memory" or "IO memory" or
137 related functions. You should never take the address of such memory, because
139 conceptually in the same memory space as "real memory" at all, so you cannot
140 just dereference a pointer. (Sadly, on x86 it _is_ in the same memory space,
144 For such memory, you can do things like
146 - reading:
148 * read first 32 bits from ISA memory at 0xC0000, aka
153 - remapping and writing:
155 * remap framebuffer PCI memory area at 0xFC000000,
157 * access only the 640k-1MB area, so anything else
168 - copying and clearing:
169 /* get the 6-byte Ethernet address at ISA address E000:0040 */
172 memcpy_toio(0xE1000, skb->data, skb->len);