1*b2441318SGreg Kroah-Hartman // SPDX-License-Identifier: GPL-2.0 2cc2ea416SAndrew Morton #include <linux/io.h> 38bc3bcc9SPaul Gortmaker #include <linux/export.h> 4cc2ea416SAndrew Morton 5cc2ea416SAndrew Morton /** 6cc2ea416SAndrew Morton * check_signature - find BIOS signatures 7cc2ea416SAndrew Morton * @io_addr: mmio address to check 8cc2ea416SAndrew Morton * @signature: signature block 9cc2ea416SAndrew Morton * @length: length of signature 10cc2ea416SAndrew Morton * 11cc2ea416SAndrew Morton * Perform a signature comparison with the mmio address io_addr. This 12cc2ea416SAndrew Morton * address should have been obtained by ioremap. 13cc2ea416SAndrew Morton * Returns 1 on a match. 14cc2ea416SAndrew Morton */ 15cc2ea416SAndrew Morton check_signature(const volatile void __iomem * io_addr,const unsigned char * signature,int length)16cc2ea416SAndrew Mortonint check_signature(const volatile void __iomem *io_addr, 17cc2ea416SAndrew Morton const unsigned char *signature, int length) 18cc2ea416SAndrew Morton { 19cc2ea416SAndrew Morton while (length--) { 20cc2ea416SAndrew Morton if (readb(io_addr) != *signature) 21cc2ea416SAndrew Morton return 0; 22cc2ea416SAndrew Morton io_addr++; 23cc2ea416SAndrew Morton signature++; 24cc2ea416SAndrew Morton } 25cc2ea416SAndrew Morton return 1; 26cc2ea416SAndrew Morton } 27cc2ea416SAndrew Morton EXPORT_SYMBOL(check_signature); 28