devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
  • * [PATCH v5 14/22] sh: SH7751 core dtsi
           [not found] <1467564402-2649-1-git-send-email-ysato@users.sourceforge.jp>
           [not found] ` <1467564402-2649-1-git-send-email-ysato-Rn4VEauK+AKRv+LV9MX5uooqe+aC9MnS@public.gmane.org>
    @ 2016-07-03 16:46 ` Yoshinori Sato
      2016-07-03 16:46 ` [PATCH v5 19/22] sh: IO-DATA HDL-U (a.k.a landisk) IRQCHIP driver Yoshinori Sato
                       ` (3 subsequent siblings)
      5 siblings, 0 replies; 13+ messages in thread
    From: Yoshinori Sato @ 2016-07-03 16:46 UTC (permalink / raw)
      To: devicetree, linux-sh, linux-kernel; +Cc: Yoshinori Sato
    
    SH7751 core and internal peripheral define.
    
    Signed-off-by: Yoshinori Sato <ysato@users.sourceforge.jp>
    ---
     arch/sh/boot/dts/include/dt-bindings               |  1 +
     arch/sh/boot/dts/sh7751.dtsi                       | 83 ++++++++++++++++++++++
     include/dt-bindings/clock/renesas-sh7750.h         | 26 +++++++
     include/dt-bindings/interrupt-controller/sh_intc.h |  2 +
     4 files changed, 112 insertions(+)
     create mode 120000 arch/sh/boot/dts/include/dt-bindings
     create mode 100644 arch/sh/boot/dts/sh7751.dtsi
     create mode 100644 include/dt-bindings/clock/renesas-sh7750.h
     create mode 100644 include/dt-bindings/interrupt-controller/sh_intc.h
    
    diff --git a/arch/sh/boot/dts/include/dt-bindings b/arch/sh/boot/dts/include/dt-bindings
    new file mode 120000
    index 0000000..08c00e4
    --- /dev/null
    +++ b/arch/sh/boot/dts/include/dt-bindings
    @@ -0,0 +1 @@
    +../../../../../include/dt-bindings
    \ No newline at end of file
    diff --git a/arch/sh/boot/dts/sh7751.dtsi b/arch/sh/boot/dts/sh7751.dtsi
    new file mode 100644
    index 0000000..713e72e
    --- /dev/null
    +++ b/arch/sh/boot/dts/sh7751.dtsi
    @@ -0,0 +1,83 @@
    +/*
    + * Device Tree Source for the SH7751
    + *
    + * Copyright (C) 2016 Yoshinori Sato
    + */
    +
    +#include <dt-bindings/interrupt-controller/sh_intc.h>
    +#include <dt-bindings/clock/renesas-sh7750.h>
    +
    +/ {
    +	oclk: oscillator {
    +                #clock-cells = <0>;
    +                compatible = "fixed-clock";
    +                clock-frequency = <0>;
    +        };
    +	cpg: clock-controller@ffc00000 {
    +                compatible = "renesas,sh7750-cpg";
    +                clocks = <&oclk>;
    +                #clock-cells = <1>;
    +		renesas,mult = <12>;
    +                reg = <0xffc00000 32>, <0xfe0a0000 16>;
    +        };
    +	cpus {
    +		#address-cells = <1>;
    +		#size-cells = <0>;
    +		cpu@0 {
    +		      compatible = "renesas,sh4", "renesas,sh";
    +		      clock-frequency = <266666666>;
    +		};
    +	};
    +	shintc: interrupt-controller@ffd00000 {
    +		compatible = "renesas,sh7751-intc";
    +		#interrupt-cells = <2>;
    +		interrupt-controller;
    +		reg = <0xffd00000 14>, <0xfe080000 128>;
    +
    +	};
    +	sci0: serial@ffe00000 {
    +		compatible = "renesas,sci";
    +		reg = <0xffe00000 0x20>;
    +		interrupts = <evt2irq(0x4e0) 0>,
    +		             <evt2irq(0x500) 0>,
    +		             <evt2irq(0x540) 0>,
    +		             <evt2irq(0x520) 0>;
    +		clocks = <&cpg SH7750_CLK_SCI>;
    +		clock-names = "fck";
    +		status = "disabled";
    +	};
    +	sci1: serial@ffe80000 {
    +		compatible = "renesas,scif";
    +		reg = <0xffe80000 0x100>;
    +		interrupts = <evt2irq(0x700) 0>,
    +			     <evt2irq(0x720) 0>,
    +			     <evt2irq(0x760) 0>,
    +			     <evt2irq(0x740) 0>;
    +		clocks = <&cpg SH7750_CLK_SCIF>;
    +		clock-names = "fck";
    +		status = "disabled";
    +	};
    +	tmu: timer@ffd80000 {
    +		compatible = "renesas,tmu";
    +		reg = <0xffd80000 12>;
    +		interrupts = <evt2irq(0x400) 0>,
    +			     <evt2irq(0x420) 0>,
    +			     <evt2irq(0x440) 0>;
    +		clocks = <&cpg SH7750_CLK_TMU0>;
    +		clock-names = "fck";
    +		renesas,channels-mask = <0x03>;
    +	};
    +	pci: pci-controller@fe200000 {
    +		compatible = "renesas,sh7751-pci";
    +		device_type = "pci";
    +		bus-range = <0 0>;
    +		#address-cells = <2>;
    +		#size-cells = <1>;
    +		ranges = <0x02000000 0x00000000 0xfd000000 0xfd000000 0x00000000 0x01000000>,
    +		         <0x01000000 0x00000000 0xfe240000 0x00000000 0x00000000 0x00040000>;
    +		reg = <0xfe200000 0x0400>, <0xff800000 0x0030>;
    +		#interrupt-cells = <1>;
    +		interrupt-map-mask = <0x1800 0 7>;
    +		status = "disabled";
    +	};
    +};
    diff --git a/include/dt-bindings/clock/renesas-sh7750.h b/include/dt-bindings/clock/renesas-sh7750.h
    new file mode 100644
    index 0000000..546c0b1
    --- /dev/null
    +++ b/include/dt-bindings/clock/renesas-sh7750.h
    @@ -0,0 +1,26 @@
    +/*
    + * Copyright (C) 2016 Yoshinori Sato
    + *
    + * This program is free software; you can redistribute it and/or modify
    + * it under the terms of the GNU General Public License as published by
    + * the Free Software Foundation; either version 2 of the License, or
    + * (at your option) any later version.
    + */
    +#ifndef __DT_BINDINGS_CLOCK_RENESAS_SH7750_H__
    +#define __DT_BINDINGS_CLOCK_RENESAS_SH7750_H__
    +
    +#define SH7750_CLK_SCI	0
    +#define SH7750_CLK_RTC	1
    +#define SH7750_CLK_TMU0	2
    +#define SH7750_CLK_TMU1	3
    +#define SH7750_CLK_TMU2	4
    +#define SH7750_CLK_SCIF	5
    +#define SH7750_CLK_DMAC	6
    +#define SH7750_CLK_UBC	7
    +#define SH7750_CLK_SQ	8
    +#define SH7750_CLK_INTC 9
    +#define SH7750_CLK_TMU3	10
    +#define SH7750_CLK_TMU4	11
    +#define SH7750_CLK_PCIC	12
    +
    +#endif /* __DT_BINDINGS_CLOCK_RENESAS_CPG_MSSR_H__ */
    diff --git a/include/dt-bindings/interrupt-controller/sh_intc.h b/include/dt-bindings/interrupt-controller/sh_intc.h
    new file mode 100644
    index 0000000..8c9dcdc
    --- /dev/null
    +++ b/include/dt-bindings/interrupt-controller/sh_intc.h
    @@ -0,0 +1,2 @@
    +#define evt2irq(evt)		(((evt) >> 5) - 16)
    +#define irq2evt(irq)		(((irq) + 16) << 5)
    -- 
    2.7.0
    
    
    ^ permalink raw reply related	[flat|nested] 13+ messages in thread
  • * [PATCH v5 19/22] sh: IO-DATA HDL-U (a.k.a landisk) IRQCHIP driver
           [not found] <1467564402-2649-1-git-send-email-ysato@users.sourceforge.jp>
           [not found] ` <1467564402-2649-1-git-send-email-ysato-Rn4VEauK+AKRv+LV9MX5uooqe+aC9MnS@public.gmane.org>
      2016-07-03 16:46 ` [PATCH v5 14/22] sh: SH7751 core dtsi Yoshinori Sato
    @ 2016-07-03 16:46 ` Yoshinori Sato
      2016-07-11 14:02   ` Rob Herring
      2016-07-03 16:46 ` [PATCH v5 20/22] sh: IO-DATA HDL-U (a.k.a landisk) DeviceTree Yoshinori Sato
                       ` (2 subsequent siblings)
      5 siblings, 1 reply; 13+ messages in thread
    From: Yoshinori Sato @ 2016-07-03 16:46 UTC (permalink / raw)
      To: devicetree, linux-sh, linux-kernel; +Cc: Yoshinori Sato
    
    Signed-off-by: Yoshinori Sato <ysato@users.sourceforge.jp>
    ---
     .../interrupt-controller/iodata-landisk.txt        | 31 ++++++++++
     drivers/irqchip/Makefile                           |  2 +-
     drivers/irqchip/irq-io-landisk.c                   | 72 ++++++++++++++++++++++
     3 files changed, 104 insertions(+), 1 deletion(-)
     create mode 100644 Documentation/devicetree/bindings/interrupt-controller/iodata-landisk.txt
     create mode 100644 drivers/irqchip/irq-io-landisk.c
    
    diff --git a/Documentation/devicetree/bindings/interrupt-controller/iodata-landisk.txt b/Documentation/devicetree/bindings/interrupt-controller/iodata-landisk.txt
    new file mode 100644
    index 0000000..cf461dc
    --- /dev/null
    +++ b/Documentation/devicetree/bindings/interrupt-controller/iodata-landisk.txt
    @@ -0,0 +1,31 @@
    +DT bindings for the I/O DATA HDL-U interrupt controller
    +
    +Required properties:
    +
    +  - compatible: has to be "iodata,landisk-intc".
    +
    +  - reg: Base address and length of interrupt controller register.
    +
    +  - #interrupt-cells: has to be <1>: an interrupt index.
    +
    +  - #address-cells: has to be <0>
    +
    +  - interrupt-map: Interrupt mapping on parent controller.
    +
    +Example
    +-------
    +
    +	cpldintc: cpld@b0000000 {
    +		compatible = "iodata,landisk-intc";
    +		#interrupt-cells = <1>;
    +		#address-cells = <0>;
    +		reg = <0xb0000000 8>;
    +		interrupt-map=<0 &shintc evt2irq(0x2a0)>,
    +		              <1 &shintc evt2irq(0x2c0)>,
    +		              <2 &shintc evt2irq(0x2e0)>,
    +			      <3 &shintc evt2irq(0x300)>,
    +		              <4 &shintc evt2irq(0x320)>,
    +			      <5 &shintc evt2irq(0x340)>,
    +		              <6 &shintc evt2irq(0x360)>,
    +			      <7 &shintc evt2irq(0x380)>;
    +	};
    diff --git a/drivers/irqchip/Makefile b/drivers/irqchip/Makefile
    index 2ab5735..5e225cf 100644
    --- a/drivers/irqchip/Makefile
    +++ b/drivers/irqchip/Makefile
    @@ -69,4 +69,4 @@ obj-$(CONFIG_PIC32_EVIC)		+= irq-pic32-evic.o
     obj-$(CONFIG_MVEBU_ODMI)		+= irq-mvebu-odmi.o
     obj-$(CONFIG_LS_SCFG_MSI)		+= irq-ls-scfg-msi.o
     obj-$(CONFIG_EZNPS_GIC)			+= irq-eznps.o
    -obj-$(CONFIG_RENESAS_SH_INTC)		+= irq-renesas-sh7751.o
    +obj-$(CONFIG_RENESAS_SH_INTC)		+= irq-renesas-sh7751.o irq-io-landisk.o
    diff --git a/drivers/irqchip/irq-io-landisk.c b/drivers/irqchip/irq-io-landisk.c
    new file mode 100644
    index 0000000..b7f3b41
    --- /dev/null
    +++ b/drivers/irqchip/irq-io-landisk.c
    @@ -0,0 +1,72 @@
    +/*
    + * IO-DATA LANDISK CPLD IRQ driver
    + *
    + * Copyright 2016 Yoshinori Sato <ysato@users.sourceforge.jp>
    + */
    +
    +#include <linux/init.h>
    +#include <linux/irq.h>
    +#include <linux/irqchip.h>
    +#include <linux/irqdomain.h>
    +#include <linux/of_address.h>
    +#include <linux/of_irq.h>
    +#include <linux/io.h>
    +
    +static void landisk_mask_irq(struct irq_data *data)
    +{
    +	u8 mask = __raw_readb(data->chip_data + 5);
    +
    +	mask &= ~(1 << (data->irq - 5));
    +	__raw_writeb(mask, data->chip_data + 5);
    +}
    +
    +static void landisk_unmask_irq(struct irq_data *data)
    +{
    +	u8 mask = __raw_readb(data->chip_data + 5);
    +
    +	mask |= (1 << (data->irq - 5));
    +	__raw_writeb(mask, data->chip_data + 5);
    +}
    +
    +static struct irq_chip cpld_irq_chip = {
    +	.name		= "LANDISK-CPLD",
    +	.irq_unmask	= landisk_unmask_irq,
    +	.irq_mask	= landisk_mask_irq,
    +};
    +
    +static int cpld_map(struct irq_domain *d, unsigned int virq,
    +		    irq_hw_number_t hw_irq_num)
    +{
    +	irq_set_chip_and_handler(virq, &cpld_irq_chip,
    +				 handle_simple_irq);
    +	irq_set_chip_data(virq, d->host_data);
    +
    +	return 0;
    +}
    +
    +static struct irq_domain_ops irq_ops = {
    +	.xlate	= irq_domain_xlate_onecell,
    +	.map	= cpld_map,
    +};
    +
    +static int __init landisk_intc_of_init(struct device_node *intc,
    +				    struct device_node *parent)
    +{
    +	struct irq_domain *domain, *pdomain;
    +	int num_irqpin;
    +	void *baseaddr;
    +
    +	baseaddr = of_iomap(intc, 0);
    +	pdomain = irq_find_host(parent);
    +	of_get_property(intc, "interrupt-map", &num_irqpin);
    +	num_irqpin /= sizeof(u32) * 3;
    +	domain = irq_domain_create_hierarchy(pdomain, 0, num_irqpin,
    +					     of_node_to_fwnode(intc),
    +					     &irq_ops, baseaddr);
    +	if (!domain)
    +		panic("%s: unable to create IRQ domain\n", intc->full_name);
    +	irq_domain_associate_many(domain, 5, 0, 8);
    +	return 0;
    +}
    +
    +IRQCHIP_DECLARE(cpld_intc, "iodata,landisk-intc", landisk_intc_of_init);
    -- 
    2.7.0
    
    ^ permalink raw reply related	[flat|nested] 13+ messages in thread
  • * [PATCH v5 20/22] sh: IO-DATA HDL-U (a.k.a landisk) DeviceTree
           [not found] <1467564402-2649-1-git-send-email-ysato@users.sourceforge.jp>
                       ` (2 preceding siblings ...)
      2016-07-03 16:46 ` [PATCH v5 19/22] sh: IO-DATA HDL-U (a.k.a landisk) IRQCHIP driver Yoshinori Sato
    @ 2016-07-03 16:46 ` Yoshinori Sato
      2016-07-03 19:00   ` Sergei Shtylyov
      2016-07-03 16:46 ` [PATCH v5 21/22] sh: Renesas RTS7751R2Dplus (a.k.a R2Dplus) IRQCHIP Driver Yoshinori Sato
      2016-07-03 16:46 ` [PATCH v5 22/22] sh: Renesas RTS7751R2Dplus (a,k.a R2Dplus) DeviceTree Yoshinori Sato
      5 siblings, 1 reply; 13+ messages in thread
    From: Yoshinori Sato @ 2016-07-03 16:46 UTC (permalink / raw)
      To: devicetree, linux-sh, linux-kernel; +Cc: Yoshinori Sato
    
    Signed-off-by: Yoshinori Sato <ysato@users.sourceforge.jp>
    ---
     arch/sh/boot/dts/Makefile    |  2 ++
     arch/sh/boot/dts/landisk.dts | 61 ++++++++++++++++++++++++++++++++++++++++++++
     2 files changed, 63 insertions(+)
     create mode 100644 arch/sh/boot/dts/landisk.dts
    
    diff --git a/arch/sh/boot/dts/Makefile b/arch/sh/boot/dts/Makefile
    index 38fdc38..cf5aec4 100644
    --- a/arch/sh/boot/dts/Makefile
    +++ b/arch/sh/boot/dts/Makefile
    @@ -1,5 +1,7 @@
     obj-$(CONFIG_USE_BUILTIN_DTB) += $(patsubst "%",%,$(CONFIG_BUILTIN_DTB_SOURCE)).dtb.o
     
    +dtb-y += landisk.dtb
    +
     dtstree		:= $(srctree)/$(src)
     clean-files := *.dtb.S
     always	    := $(dtb-y)
    diff --git a/arch/sh/boot/dts/landisk.dts b/arch/sh/boot/dts/landisk.dts
    new file mode 100644
    index 0000000..3745ae0
    --- /dev/null
    +++ b/arch/sh/boot/dts/landisk.dts
    @@ -0,0 +1,61 @@
    +/dts-v1/;
    +
    +#include "sh7751.dtsi"
    +
    +/ {
    +	model = "iodata,HDL-U";
    +	compatible = "iodata,hdl-u";
    +	#address-cells = <1>;
    +	#size-cells = <1>;
    +	interrupt-parent = <&shintc>;
    +	chosen {
    +		stdout-path = "serial1:115200n8";
    +	};
    +	aliases {
    +		serial0 = &sci0;
    +		serial1 = &sci1;
    +	};
    +
    +	memory@0c000000 {
    +		device_type = "memory";
    +		reg = <0x0c000000 0x4000000>;
    +	};
    +
    +	cpldintc: cpld@b0000000 {
    +		compatible = "iodata,landisk-intc";
    +		#interrupt-cells = <1>;
    +		#address-cells = <0>;
    +		reg = <0xb0000000 8>;
    +		interrupt-map=<0 &shintc evt2irq(0x2a0)>,
    +		              <1 &shintc evt2irq(0x2c0)>,
    +		              <2 &shintc evt2irq(0x2e0)>,
    +			      <3 &shintc evt2irq(0x300)>,
    +		              <4 &shintc evt2irq(0x320)>,
    +			      <5 &shintc evt2irq(0x340)>,
    +		              <6 &shintc evt2irq(0x360)>,
    +			      <7 &shintc evt2irq(0x380)>;
    +	};
    +};
    +
    +&oclk {
    +	clock-frequency = <22222222>;
    +};
    +
    +&sci0 {
    +	status = "ok";
    +};
    +
    +&sci1 {
    +	status = "ok";
    +};
    +
    +&pci {
    +	compatible = "renesas,sh7751-pci", "iodata,landisk-pci";
    +	interrupt-map-mask = <0x1800 0 7>;
    +	interrupt-map = <0x0000 0 1 &cpldintc 0>,
    +	                <0x0800 0 1 &cpldintc 1>,
    +	                <0x1000 0 1 &cpldintc 2>,
    +	                <0x1000 0 2 &cpldintc 3>,
    +	                <0x1000 0 3 &cpldintc 0>;
    +	status = "ok";
    +};
    -- 
    2.7.0
    
    ^ permalink raw reply related	[flat|nested] 13+ messages in thread
  • * [PATCH v5 21/22] sh: Renesas RTS7751R2Dplus (a.k.a R2Dplus) IRQCHIP Driver
           [not found] <1467564402-2649-1-git-send-email-ysato@users.sourceforge.jp>
                       ` (3 preceding siblings ...)
      2016-07-03 16:46 ` [PATCH v5 20/22] sh: IO-DATA HDL-U (a.k.a landisk) DeviceTree Yoshinori Sato
    @ 2016-07-03 16:46 ` Yoshinori Sato
      2016-07-03 16:46 ` [PATCH v5 22/22] sh: Renesas RTS7751R2Dplus (a,k.a R2Dplus) DeviceTree Yoshinori Sato
      5 siblings, 0 replies; 13+ messages in thread
    From: Yoshinori Sato @ 2016-07-03 16:46 UTC (permalink / raw)
      To: devicetree, linux-sh, linux-kernel; +Cc: Yoshinori Sato
    
    Signed-off-by: Yoshinori Sato <ysato@users.sourceforge.jp>
    ---
     .../interrupt-controller/renesas-r2dplus.txt       | 38 ++++++++++
     drivers/irqchip/Makefile                           |  2 +-
     drivers/irqchip/irq-renesas-r2dplus.c              | 88 ++++++++++++++++++++++
     3 files changed, 127 insertions(+), 1 deletion(-)
     create mode 100644 Documentation/devicetree/bindings/interrupt-controller/renesas-r2dplus.txt
     create mode 100644 drivers/irqchip/irq-renesas-r2dplus.c
    
    diff --git a/Documentation/devicetree/bindings/interrupt-controller/renesas-r2dplus.txt b/Documentation/devicetree/bindings/interrupt-controller/renesas-r2dplus.txt
    new file mode 100644
    index 0000000..5b74da4
    --- /dev/null
    +++ b/Documentation/devicetree/bindings/interrupt-controller/renesas-r2dplus.txt
    @@ -0,0 +1,38 @@
    +DT bindings for the Renesas R0P751RLC0011RL (R2Dplus) interrupt controller
    +
    +Required properties:
    +
    +  - compatible: has to be "renesas,r2dplus-intc".
    +
    +  - reg: Base address and length of interrupt controller register.
    +
    +  - #interrupt-cells: has to be <1>: an interrupt index.
    +
    +  - #address-cells: has to be <0>
    +
    +  - interrupt-map: Interrupt mapping on parent controller.
    +
    +Example
    +-------
    +
    +	fpgaintc: fpga@a4000000 {
    +		compatible = "renesas,r2dplus-intc";
    +		#interrupt-cells = <1>;
    +		#address-cells = <0>;
    +		reg = <0xa4000000 0x40>;
    +		interrupt-map=<0 &shintc evt2irq(0x200)>,
    +		              <1 &shintc evt2irq(0x220)>,
    +		              <2 &shintc evt2irq(0x240)>,
    +			      <3 &shintc evt2irq(0x260)>,
    +		              <4 &shintc evt2irq(0x280)>,
    +			      <5 &shintc evt2irq(0x2a0)>,
    +		              <6 &shintc evt2irq(0x2c0)>,
    +			      <7 &shintc evt2irq(0x2e0)>,
    +		              <8 &shintc evt2irq(0x300)>,
    +		              <9 &shintc evt2irq(0x320)>,
    +			      <10 &shintc evt2irq(0x340)>,
    +		              <11 &shintc evt2irq(0x360)>,
    +			      <12 &shintc evt2irq(0x380)>,
    +		              <13 &shintc evt2irq(0x3a0)>,
    +			      <14 &shintc evt2irq(0x3c0)>,
    +	};
    diff --git a/drivers/irqchip/Makefile b/drivers/irqchip/Makefile
    index 5e225cf..1e0f1c3 100644
    --- a/drivers/irqchip/Makefile
    +++ b/drivers/irqchip/Makefile
    @@ -69,4 +69,4 @@ obj-$(CONFIG_PIC32_EVIC)		+= irq-pic32-evic.o
     obj-$(CONFIG_MVEBU_ODMI)		+= irq-mvebu-odmi.o
     obj-$(CONFIG_LS_SCFG_MSI)		+= irq-ls-scfg-msi.o
     obj-$(CONFIG_EZNPS_GIC)			+= irq-eznps.o
    -obj-$(CONFIG_RENESAS_SH_INTC)		+= irq-renesas-sh7751.o irq-io-landisk.o
    +obj-$(CONFIG_RENESAS_SH_INTC)		+= irq-renesas-sh7751.o irq-io-landisk.o irq-renesas-r2dplus.o
    diff --git a/drivers/irqchip/irq-renesas-r2dplus.c b/drivers/irqchip/irq-renesas-r2dplus.c
    new file mode 100644
    index 0000000..3f80775
    --- /dev/null
    +++ b/drivers/irqchip/irq-renesas-r2dplus.c
    @@ -0,0 +1,88 @@
    +/*
    + * Renesas RTS7751R2D+ FPGA IRQ driver
    + *
    + * Copyright 2016 Yoshinori Sato <ysato@users.sourceforge.jp>
    + */
    +
    +#include <linux/init.h>
    +#include <linux/irq.h>
    +#include <linux/irqchip.h>
    +#include <linux/irqdomain.h>
    +#include <linux/of_address.h>
    +#include <linux/of_irq.h>
    +#include <linux/io.h>
    +
    +static const u16 mask_bit[] = {
    +	BIT(11),
    +	BIT(9),
    +	BIT(8),
    +	BIT(12),
    +	BIT(10),
    +	BIT(6),
    +	BIT(5),
    +	BIT(4),
    +	BIT(7),
    +	BIT(14),
    +	BIT(13),
    +	BIT(0),
    +	BIT(15),
    +};
    +
    +static void r2dplus_mask_irq(struct irq_data *data)
    +{
    +	u16 mask = __raw_readw(data->chip_data);
    +
    +	mask &= ~mask_bit[data->irq];
    +	__raw_writew(mask, data->chip_data);
    +}
    +
    +static void r2dplus_unmask_irq(struct irq_data *data)
    +{
    +	u16 mask = __raw_readw(data->chip_data);
    +
    +	mask |= mask_bit[data->irq];
    +	__raw_writew(mask, data->chip_data);
    +}
    +
    +static struct irq_chip fpga_irq_chip = {
    +	.name		= "R2DPLUS-FPGA",
    +	.irq_unmask	= r2dplus_unmask_irq,
    +	.irq_mask	= r2dplus_mask_irq,
    +};
    +
    +static int fpga_map(struct irq_domain *d, unsigned int virq,
    +		    irq_hw_number_t hw_irq_num)
    +{
    +	irq_set_chip_and_handler(virq, &fpga_irq_chip,
    +				 handle_simple_irq);
    +	irq_set_chip_data(virq, d->host_data);
    +
    +	return 0;
    +}
    +
    +static struct irq_domain_ops irq_ops = {
    +	.xlate	= irq_domain_xlate_onecell,
    +	.map	= fpga_map,
    +};
    +
    +static int __init r2dplus_intc_of_init(struct device_node *intc,
    +				    struct device_node *parent)
    +{
    +	struct irq_domain *domain, *pdomain;
    +	int num_irqpin;
    +	void *baseaddr;
    +
    +	baseaddr = of_iomap(intc, 0);
    +	pdomain = irq_find_host(parent);
    +	of_get_property(intc, "interrupt-map", &num_irqpin);
    +	num_irqpin /= sizeof(u32) * 3;
    +	domain = irq_domain_create_hierarchy(pdomain, 0, num_irqpin,
    +					     of_node_to_fwnode(intc),
    +					     &irq_ops, baseaddr);
    +	if (!domain)
    +		panic("%s: unable to create IRQ domain\n", intc->full_name);
    +	irq_domain_associate_many(domain, 0, 0, 16);
    +	return 0;
    +}
    +
    +IRQCHIP_DECLARE(cpld_intc, "renesas,r2dplus-intc", r2dplus_intc_of_init);
    -- 
    2.7.0
    
    
    ^ permalink raw reply related	[flat|nested] 13+ messages in thread
  • * [PATCH v5 22/22] sh: Renesas RTS7751R2Dplus (a,k.a R2Dplus) DeviceTree
           [not found] <1467564402-2649-1-git-send-email-ysato@users.sourceforge.jp>
                       ` (4 preceding siblings ...)
      2016-07-03 16:46 ` [PATCH v5 21/22] sh: Renesas RTS7751R2Dplus (a.k.a R2Dplus) IRQCHIP Driver Yoshinori Sato
    @ 2016-07-03 16:46 ` Yoshinori Sato
      5 siblings, 0 replies; 13+ messages in thread
    From: Yoshinori Sato @ 2016-07-03 16:46 UTC (permalink / raw)
      To: devicetree, linux-sh, linux-kernel; +Cc: Yoshinori Sato
    
    Signed-off-by: Yoshinori Sato <ysato@users.sourceforge.jp>
    ---
     arch/sh/boot/dts/Makefile    |  1 +
     arch/sh/boot/dts/r2dplus.dts | 85 ++++++++++++++++++++++++++++++++++++++++++++
     2 files changed, 86 insertions(+)
     create mode 100644 arch/sh/boot/dts/r2dplus.dts
    
    diff --git a/arch/sh/boot/dts/Makefile b/arch/sh/boot/dts/Makefile
    index cf5aec4..e059ce2b 100644
    --- a/arch/sh/boot/dts/Makefile
    +++ b/arch/sh/boot/dts/Makefile
    @@ -1,6 +1,7 @@
     obj-$(CONFIG_USE_BUILTIN_DTB) += $(patsubst "%",%,$(CONFIG_BUILTIN_DTB_SOURCE)).dtb.o
     
     dtb-y += landisk.dtb
    +otb-y += r2dplus.dtb
     
     dtstree		:= $(srctree)/$(src)
     clean-files := *.dtb.S
    diff --git a/arch/sh/boot/dts/r2dplus.dts b/arch/sh/boot/dts/r2dplus.dts
    new file mode 100644
    index 0000000..f9c01f9
    --- /dev/null
    +++ b/arch/sh/boot/dts/r2dplus.dts
    @@ -0,0 +1,85 @@
    +/dts-v1/;
    +
    +#include "sh7751.dtsi"
    +
    +/ {
    +	model = "renesas,RTS7751R2D+";
    +	compatible = "renesas,r2dplus";
    +	#address-cells = <1>;
    +	#size-cells = <1>;
    +	interrupt-parent = <&shintc>;
    +	chosen {
    +		stdout-path = "serial1:115200n8";
    +	};
    +	aliases {
    +		serial1 = &sci1;
    +	};
    +
    +	memory@0c000000 {
    +		device_type = "memory";
    +		reg = <0x0c000000 0x4000000>;
    +	};
    +
    +	fpgaintc: fpga@a4000000 {
    +		compatible = "renesas,r2dplus-intc";
    +		#interrupt-cells = <1>;
    +		#address-cells = <0>;
    +		reg = <0xa4000000 0x40>;
    +		interrupt-map=<0 &shintc evt2irq(0x200)>,
    +		              <1 &shintc evt2irq(0x220)>,
    +		              <2 &shintc evt2irq(0x240)>,
    +			      <3 &shintc evt2irq(0x260)>,
    +		              <4 &shintc evt2irq(0x280)>,
    +			      <5 &shintc evt2irq(0x2a0)>,
    +		              <6 &shintc evt2irq(0x2c0)>,
    +			      <7 &shintc evt2irq(0x2e0)>,
    +		              <8 &shintc evt2irq(0x300)>,
    +			      <9 &shintc evt2irq(0x320)>,
    +		              <10 &shintc evt2irq(0x340)>,
    +			      <11 &shintc evt2irq(0x360)>,
    +		              <12 &shintc evt2irq(0x380)>,
    +			      <13 &shintc evt2irq(0x3a0)>,
    +		              <14 &shintc evt2irq(0x3c0)>;
    +	};
    +
    +	ide: ide@b4001000 {
    +		compatible = "ata-generic";
    +		reg = <0xb4001000 0x10>, <0xb400080c 0x02>;
    +		interrupt-parent = <&fpgaintc>;
    +		interrupts = <1 0>;
    +		reg-shift = <1>;
    +		pio-mode = <0>;
    +	};
    +
    +	sm501: display@13e00000 {
    +		compatible = "smi,sm501";
    +		reg = <0x10000000 0x13dfffff>, <0x13e00000 0x13ffffff>;
    +		interrupt-parent = <&fpgaintc>;
    +		interrupts = <4 0>;
    +		mode = "640x480-16@60";
    +		edid = [00 ff ff ff ff ff ff 00 04 21 00 00 00 00 00 00
    +		        01 00 01 04 00 00 00 00 08 00 00 00 00 00 00 00
    +			00 00 00 20 00 00 01 40 01 00 01 00 01 00 01 00
    +			01 00 01 00 01 00 d6 09 80 a0 20 e0 2d 10 10 60
    +			a2 00 00 00 00 00 00 00 00 00 00 10 00 00 00 00
    +			00 00 00 00 00 00 00 00 00 00 00 00 00 10 00 00
    +			00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    +			00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 fd];
    +		smi,devices = <1>;
    +	};
    +};
    +
    +&oclk {
    +	clock-frequency = <60000000>;
    +};
    +
    +&sci1 {
    +	status = "ok";
    +};
    +
    +&pci {
    +	compatible = "renesas,sh7751-pci", "renesas.r2dplus-pci";
    +	interrupt-map-mask = <0x1800 0 7>;
    +	interrupt-map = <0x1000 0 1 &fpgaintc 3 0>;
    +	status = "ok";
    +};
    -- 
    2.7.0
    
    
    ^ permalink raw reply related	[flat|nested] 13+ messages in thread

  • end of thread, other threads:[~2016-07-22 22:59 UTC | newest]
    
    Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
    -- links below jump to the message on this page --
         [not found] <1467564402-2649-1-git-send-email-ysato@users.sourceforge.jp>
         [not found] ` <1467564402-2649-1-git-send-email-ysato-Rn4VEauK+AKRv+LV9MX5uooqe+aC9MnS@public.gmane.org>
    2016-07-03 16:46   ` [PATCH v6 12/22] sh: Add PCI host bridge driver for SH7751 Yoshinori Sato
    2016-07-05 15:53     ` Rob Herring
    2016-07-06 16:19       ` Yoshinori Sato
         [not found]     ` <1467564402-2649-13-git-send-email-ysato-Rn4VEauK+AKRv+LV9MX5uooqe+aC9MnS@public.gmane.org>
    2016-07-22 22:59       ` Bjorn Helgaas
    2016-07-03 16:46   ` [PATCH v5 13/22] sh: irqchip: SH7751 IRQCHIP Driver Yoshinori Sato
    2016-07-03 16:46 ` [PATCH v5 14/22] sh: SH7751 core dtsi Yoshinori Sato
    2016-07-03 16:46 ` [PATCH v5 19/22] sh: IO-DATA HDL-U (a.k.a landisk) IRQCHIP driver Yoshinori Sato
    2016-07-11 14:02   ` Rob Herring
    2016-07-03 16:46 ` [PATCH v5 20/22] sh: IO-DATA HDL-U (a.k.a landisk) DeviceTree Yoshinori Sato
    2016-07-03 19:00   ` Sergei Shtylyov
    2016-07-06 16:18     ` Yoshinori Sato
    2016-07-03 16:46 ` [PATCH v5 21/22] sh: Renesas RTS7751R2Dplus (a.k.a R2Dplus) IRQCHIP Driver Yoshinori Sato
    2016-07-03 16:46 ` [PATCH v5 22/22] sh: Renesas RTS7751R2Dplus (a,k.a R2Dplus) DeviceTree Yoshinori Sato
    

    This is a public inbox, see mirroring instructions
    for how to clone and mirror all data and code used for this inbox;
    as well as URLs for NNTP newsgroup(s).