162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * parport.h: platform-specific PC-style parport initialisation
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci * Copyright (C) 1999, 2000  Tim Waugh <tim@cyberelk.demon.co.uk>
662306a36Sopenharmony_ci *
762306a36Sopenharmony_ci * This file should only be included by drivers/parport/parport_pc.c.
862306a36Sopenharmony_ci */
962306a36Sopenharmony_ci
1062306a36Sopenharmony_ci#ifndef _ASM_POWERPC_PARPORT_H
1162306a36Sopenharmony_ci#define _ASM_POWERPC_PARPORT_H
1262306a36Sopenharmony_ci#ifdef __KERNEL__
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_ci#include <linux/of_irq.h>
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_cistatic int parport_pc_find_nonpci_ports (int autoirq, int autodma)
1762306a36Sopenharmony_ci{
1862306a36Sopenharmony_ci	struct device_node *np;
1962306a36Sopenharmony_ci	const u32 *prop;
2062306a36Sopenharmony_ci	u32 io1, io2;
2162306a36Sopenharmony_ci	int propsize;
2262306a36Sopenharmony_ci	int count = 0;
2362306a36Sopenharmony_ci	int virq;
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_ci	for_each_compatible_node(np, "parallel", "pnpPNP,400") {
2662306a36Sopenharmony_ci		prop = of_get_property(np, "reg", &propsize);
2762306a36Sopenharmony_ci		if (!prop || propsize > 6*sizeof(u32))
2862306a36Sopenharmony_ci			continue;
2962306a36Sopenharmony_ci		io1 = prop[1]; io2 = prop[2];
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ci		virq = irq_of_parse_and_map(np, 0);
3262306a36Sopenharmony_ci		if (!virq)
3362306a36Sopenharmony_ci			continue;
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ci		if (parport_pc_probe_port(io1, io2, virq, autodma, NULL, 0)
3662306a36Sopenharmony_ci				!= NULL)
3762306a36Sopenharmony_ci			count++;
3862306a36Sopenharmony_ci	}
3962306a36Sopenharmony_ci	return count;
4062306a36Sopenharmony_ci}
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ci#endif /* __KERNEL__ */
4362306a36Sopenharmony_ci#endif /* !(_ASM_POWERPC_PARPORT_H) */
44