Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

parisc/firmware: add functions to retrieve TOC data

Add functions to retrieve TOC data from firmware both
for 1.1 and 2.0 PDC.

Signed-off-by: Sven Schnelle <svens@stackframe.org>
Signed-off-by: Helge Deller <deller@gmx.de>

authored by

Sven Schnelle and committed by
Helge Deller
ecac7036 d9e20336

+34
+2
arch/parisc/include/asm/pdc.h
··· 51 51 int pdc_btlb_info(struct pdc_btlb_info *btlb); 52 52 int pdc_mem_map_hpa(struct pdc_memory_map *r_addr, struct pdc_module_path *mod_path); 53 53 #endif /* !CONFIG_PA20 */ 54 + int pdc_pim_toc11(struct pdc_toc_pim_11 *ret); 55 + int pdc_pim_toc20(struct pdc_toc_pim_20 *ret); 54 56 int pdc_lan_station_id(char *lan_addr, unsigned long net_hpa); 55 57 56 58 int pdc_stable_read(unsigned long staddr, void *memaddr, unsigned long count);
+32
arch/parisc/kernel/firmware.c
··· 1062 1062 } 1063 1063 1064 1064 /** 1065 + * pdc_pim_toc11 - Fetch TOC PIM 1.1 data from firmware. 1066 + * @ret: pointer to return buffer 1067 + */ 1068 + int pdc_pim_toc11(struct pdc_toc_pim_11 *ret) 1069 + { 1070 + int retval; 1071 + unsigned long flags; 1072 + 1073 + spin_lock_irqsave(&pdc_lock, flags); 1074 + retval = mem_pdc_call(PDC_PIM, PDC_PIM_TOC, __pa(pdc_result), 1075 + __pa(ret), sizeof(*ret)); 1076 + spin_unlock_irqrestore(&pdc_lock, flags); 1077 + return retval; 1078 + } 1079 + 1080 + /** 1081 + * pdc_pim_toc20 - Fetch TOC PIM 2.0 data from firmware. 1082 + * @ret: pointer to return buffer 1083 + */ 1084 + int pdc_pim_toc20(struct pdc_toc_pim_20 *ret) 1085 + { 1086 + int retval; 1087 + unsigned long flags; 1088 + 1089 + spin_lock_irqsave(&pdc_lock, flags); 1090 + retval = mem_pdc_call(PDC_PIM, PDC_PIM_TOC, __pa(pdc_result), 1091 + __pa(ret), sizeof(*ret)); 1092 + spin_unlock_irqrestore(&pdc_lock, flags); 1093 + return retval; 1094 + } 1095 + 1096 + /** 1065 1097 * pdc_tod_set - Set the Time-Of-Day clock. 1066 1098 * @sec: The number of seconds since epoch. 1067 1099 * @usec: The number of micro seconds.