Lines Matching defs:controller
127 attach_nvram_regs (struct hw *me, struct nvram *controller)
155 controller->mode = NVRAM_SAVE_ALL;
156 controller->base_address = attach_address;
157 controller->size = attach_size;
158 controller->fd = -1;
164 controller->file_name = hw_find_string_property (me, "file");
172 controller->mode = NVRAM_MAP_FILE;
174 controller->mode = NVRAM_SAVE_MODIFIED;
176 controller->mode = NVRAM_SAVE_ALL;
184 switch (controller->mode)
192 controller->data = hw_malloc (me, attach_size);
193 if (controller->data == 0)
196 memset (controller->data, 0, attach_size);
197 controller->fd = open (controller->file_name, O_RDWR);
198 if (controller->fd < 0)
200 controller->fd = open (controller->file_name,
202 if (controller->fd < 0)
204 controller->file_name);
205 result = write (controller->fd, controller->data, attach_size);
209 hw_free (me, controller->data);
210 close (controller->fd);
217 result = read (controller->fd, controller->data, attach_size);
221 hw_free (me, controller->data);
222 close (controller->fd);
227 if (controller->mode == NVRAM_SAVE_ALL)
229 close (controller->fd);
230 controller->fd = -1;
243 struct nvram *controller;
245 controller = HW_ZALLOC (me, struct nvram);
247 set_hw_data (me, controller);
252 attach_nvram_regs (me, controller);
266 struct nvram *controller = hw_data (me);
270 (long) (base - controller->base_address)));
272 base -= controller->base_address;
273 if (base + nr_bytes > controller->size)
274 nr_bytes = controller->size - base;
276 memcpy (dest, &controller->data[base], nr_bytes);
289 struct nvram *controller = hw_data (me);
293 (long) (base - controller->base_address)));
295 base -= controller->base_address;
296 if (base + nr_bytes > controller->size)
297 nr_bytes = controller->size - base;
299 switch (controller->mode)
305 fd = open (controller->file_name, O_WRONLY, 0644);
311 memcpy (&controller->data[base], source, nr_bytes);
312 result = write (fd, controller->data, controller->size);
317 if (result != controller->size)
329 pos = lseek (controller->fd, (off_t) base, SEEK_SET);
333 result = write (controller->fd, source, nr_bytes);
344 memcpy (&controller->data[base], source, nr_bytes);