Commit 8e5423e9 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull parisc architecture fixes from Helge Deller:
 "This mostly handles oddities with the serial port 8250_gsc.c driver.

  Although the name suggests it's just for serial ports on the GSC bus
  (e.g. in older PA-RISC machines), it handles serial ports on PA-RISC
  PCI devices (e.g. on the SuperIO chip) as well.

  Thus this renames the driver to 8250_parisc and fixes the config
  dependencies.

  The other change is a cleanup on how the device IDs of devices in a
  PA-RISC machine are shown at startup"

* tag 'parisc-for-6.1-2' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux:
  parisc: Avoid printing the hardware path twice
  parisc: Export iosapic_serial_irq() symbol for serial port driver
  MAINTAINERS: adjust entry after renaming parisc serial driver
  parisc: Use signed char for hardware path in pdc.h
  parisc/serial: Rename 8250_gsc.c to 8250_parisc.c
  parisc: Make 8250_gsc driver dependend on CONFIG_PARISC
parents 31fc92fc 2b6ae096
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -15630,7 +15630,7 @@ F: drivers/input/serio/gscps2.c
F:	drivers/input/serio/hp_sdc*
F:	drivers/parisc/
F:	drivers/parport/parport_gsc.*
F:	drivers/tty/serial/8250/8250_gsc.c
F:	drivers/tty/serial/8250/8250_parisc.c
F:	drivers/video/console/sti*
F:	drivers/video/fbdev/sti*
F:	drivers/video/logo/logo_parisc*
+6 −6
Original line number Diff line number Diff line
@@ -10,12 +10,12 @@
#define SVERSION_ANY_ID		PA_SVERSION_ANY_ID

struct hp_hardware {
	unsigned short	hw_type:5;	/* HPHW_xxx */
	unsigned short	hversion;
	unsigned long	sversion:28;
	unsigned short	opt;
	const char	name[80];	/* The hardware description */
};
	unsigned int	hw_type:8;	/* HPHW_xxx */
	unsigned int	hversion:12;
	unsigned int	sversion:12;
	unsigned char	opt;
	unsigned char	name[59];	/* The hardware description */
} __packed;

struct parisc_device;

+13 −23
Original line number Diff line number Diff line
@@ -363,20 +363,25 @@

#if !defined(__ASSEMBLY__)

/* flags of the device_path */
/* flags for hardware_path */
#define	PF_AUTOBOOT	0x80
#define	PF_AUTOSEARCH	0x40
#define	PF_TIMER	0x0F

struct device_path {		/* page 1-69 */
	unsigned char flags;	/* flags see above! */
	unsigned char bc[6];	/* bus converter routing info */
	unsigned char mod;
	unsigned int  layers[6];/* device-specific layer-info */
struct hardware_path {
	unsigned char flags;	/* see bit definitions below */
	signed   char bc[6];	/* Bus Converter routing info to a specific */
				/* I/O adaptor (< 0 means none, > 63 resvd) */
	signed   char mod;	/* fixed field of specified module */
};

struct pdc_module_path {	/* page 1-69 */
	struct hardware_path path;
	unsigned int layers[6]; /* device-specific info (ctlr #, unit # ...) */
} __attribute__((aligned(8)));

struct pz_device {
	struct	device_path dp;	/* see above */
	struct pdc_module_path dp;	/* see above */
	/* struct	iomod *hpa; */
	unsigned int hpa;	/* HPA base address */
	/* char	*spa; */
@@ -611,21 +616,6 @@ struct pdc_initiator { /* PDC_INITIATOR */
	int mode;
};

struct hardware_path {
	char  flags;	/* see bit definitions below */
	char  bc[6];	/* Bus Converter routing info to a specific */
			/* I/O adaptor (< 0 means none, > 63 resvd) */
	char  mod;	/* fixed field of specified module */
};

/*
 * Device path specifications used by PDC.
 */
struct pdc_module_path {
	struct hardware_path path;
	unsigned int layers[6]; /* device-specific info (ctlr #, unit # ...) */
};

/* Only used on some pre-PA2.0 boxes */
struct pdc_memory_map {		/* PDC_MEMORY_MAP */
	unsigned long hpa;	/* mod's register set address */
+6 −8
Original line number Diff line number Diff line
@@ -882,15 +882,13 @@ void __init walk_central_bus(void)
			&root);
}

static void print_parisc_device(struct parisc_device *dev)
static __init void print_parisc_device(struct parisc_device *dev)
{
	char hw_path[64];
	static int count;
	static int count __initdata;

	print_pa_hwpath(dev, hw_path);
	pr_info("%d. %s at %pap [%s] { %d, 0x%x, 0x%.3x, 0x%.5x }",
		++count, dev->name, &(dev->hpa.start), hw_path, dev->id.hw_type,
		dev->id.hversion_rev, dev->id.hversion, dev->id.sversion);
	pr_info("%d. %s at %pap { type:%d, hv:%#x, sv:%#x, rev:%#x }",
		++count, dev->name, &(dev->hpa.start), dev->id.hw_type,
		dev->id.hversion, dev->id.sversion, dev->id.hversion_rev);

	if (dev->num_addrs) {
		int k;
@@ -1079,7 +1077,7 @@ static __init int qemu_print_iodc_data(struct device *lin_dev, void *data)



static int print_one_device(struct device * dev, void * data)
static __init int print_one_device(struct device * dev, void * data)
{
	struct parisc_device * pdev = to_parisc_device(dev);

+1 −0
Original line number Diff line number Diff line
@@ -866,6 +866,7 @@ int iosapic_serial_irq(struct parisc_device *dev)

	return vi->txn_irq;
}
EXPORT_SYMBOL(iosapic_serial_irq);
#endif


Loading