| /* SPDX-License-Identifier: GPL-2.0-only */ |
| |
| #include <device/device.h> |
| #include <device/pci_ids.h> |
| #include <smbios.h> |
| |
| #include "wifi_private.h" |
| |
| static int smbios_write_intel_wifi(struct device *dev, int *handle, unsigned long *current) |
| { |
| if (dev->vendor != PCI_VID_INTEL) |
| return 0; |
| |
| struct smbios_type_intel_wifi { |
| struct smbios_header header; |
| u8 str; |
| u8 eos[2]; |
| } __packed; |
| |
| struct smbios_type_intel_wifi *t = smbios_carve_table(*current, 0x85, |
| sizeof(*t), *handle); |
| |
| /* Intel wifi driver expects this string to be in the table 0x85. */ |
| t->str = smbios_add_string(t->eos, "KHOIHGIUCCHHII"); |
| |
| const int len = smbios_full_table_len(&t->header, t->eos); |
| *current += len; |
| *handle += 1; |
| return len; |
| } |
| |
| int smbios_write_wifi_pcie(struct device *dev, int *handle, unsigned long *current) |
| { |
| int len = smbios_write_intel_wifi(dev, handle, current); |
| len += get_smbios_data(dev, handle, current); |
| return len; |
| } |
| |
| int smbios_write_wifi_cnvi(struct device *dev, int *handle, unsigned long *current) |
| { |
| return smbios_write_wifi_pcie(dev->bus->dev, handle, current); |
| } |