Lines Matching +full:rom +full:-

1 // SPDX-License-Identifier: MIT
13 /* for PCI ROM */
23 u32 (*read32)(struct intel_rom *rom, loff_t offset);
24 u16 (*read16)(struct intel_rom *rom, loff_t offset);
25 void (*read_block)(struct intel_rom *rom, void *data, loff_t offset, size_t size);
26 void (*free)(struct intel_rom *rom);
29 static u32 spi_read32(struct intel_rom *rom, loff_t offset) in spi_read32() argument
31 intel_uncore_write(rom->uncore, PRIMARY_SPI_ADDRESS, in spi_read32()
32 rom->offset + offset); in spi_read32()
34 return intel_uncore_read(rom->uncore, PRIMARY_SPI_TRIGGER); in spi_read32()
37 static u16 spi_read16(struct intel_rom *rom, loff_t offset) in spi_read16() argument
39 return spi_read32(rom, offset) & 0xffff; in spi_read16()
44 struct intel_rom *rom; in intel_rom_spi() local
47 rom = kzalloc(sizeof(*rom), GFP_KERNEL); in intel_rom_spi()
48 if (!rom) in intel_rom_spi()
51 rom->uncore = &i915->uncore; in intel_rom_spi()
53 static_region = intel_uncore_read(rom->uncore, SPI_STATIC_REGIONS); in intel_rom_spi()
55 intel_uncore_write(rom->uncore, PRIMARY_SPI_REGIONID, static_region); in intel_rom_spi()
57 rom->offset = intel_uncore_read(rom->uncore, OROM_OFFSET) & OROM_OFFSET_MASK; in intel_rom_spi()
59 rom->size = 0x200000; in intel_rom_spi()
61 rom->read32 = spi_read32; in intel_rom_spi()
62 rom->read16 = spi_read16; in intel_rom_spi()
64 return rom; in intel_rom_spi()
67 static u32 pci_read32(struct intel_rom *rom, loff_t offset) in pci_read32() argument
69 return ioread32(rom->oprom + offset); in pci_read32()
72 static u16 pci_read16(struct intel_rom *rom, loff_t offset) in pci_read16() argument
74 return ioread16(rom->oprom + offset); in pci_read16()
77 static void pci_read_block(struct intel_rom *rom, void *data, in pci_read_block() argument
80 memcpy_fromio(data, rom->oprom + offset, size); in pci_read_block()
83 static void pci_free(struct intel_rom *rom) in pci_free() argument
85 pci_unmap_rom(rom->pdev, rom->oprom); in pci_free()
90 struct intel_rom *rom; in intel_rom_pci() local
92 rom = kzalloc(sizeof(*rom), GFP_KERNEL); in intel_rom_pci()
93 if (!rom) in intel_rom_pci()
96 rom->pdev = to_pci_dev(i915->drm.dev); in intel_rom_pci()
98 rom->oprom = pci_map_rom(rom->pdev, &rom->size); in intel_rom_pci()
99 if (!rom->oprom) { in intel_rom_pci()
100 kfree(rom); in intel_rom_pci()
104 rom->read32 = pci_read32; in intel_rom_pci()
105 rom->read16 = pci_read16; in intel_rom_pci()
106 rom->read_block = pci_read_block; in intel_rom_pci()
107 rom->free = pci_free; in intel_rom_pci()
109 return rom; in intel_rom_pci()
112 u32 intel_rom_read32(struct intel_rom *rom, loff_t offset) in intel_rom_read32() argument
114 return rom->read32(rom, offset); in intel_rom_read32()
117 u16 intel_rom_read16(struct intel_rom *rom, loff_t offset) in intel_rom_read16() argument
119 return rom->read16(rom, offset); in intel_rom_read16()
122 void intel_rom_read_block(struct intel_rom *rom, void *data, in intel_rom_read_block() argument
128 if (rom->read_block) { in intel_rom_read_block()
129 rom->read_block(rom, data, offset, size); in intel_rom_read_block()
134 *ptr++ = rom->read32(rom, offset + index); in intel_rom_read_block()
137 loff_t intel_rom_find(struct intel_rom *rom, u32 needle) in intel_rom_find() argument
141 for (offset = 0; offset < rom->size; offset += 4) { in intel_rom_find()
142 if (rom->read32(rom, offset) == needle) in intel_rom_find()
146 return -ENOENT; in intel_rom_find()
149 size_t intel_rom_size(struct intel_rom *rom) in intel_rom_size() argument
151 return rom->size; in intel_rom_size()
154 void intel_rom_free(struct intel_rom *rom) in intel_rom_free() argument
156 if (rom && rom->free) in intel_rom_free()
157 rom->free(rom); in intel_rom_free()
159 kfree(rom); in intel_rom_free()