[PATCH 2/4] ARC: axs10x: Update defconfigs so that audio is enabled

2016-02-19 Thread Carlos Palminha
From: Jose Abreu 

The defconfigs for the AXS boards were updated so that
ALSA SoC is enabled and also the audio for the ADV7511
HDMI transmitter.

Signed-off-by: Jose Abreu 
---
 arch/arc/configs/axs101_defconfig | 3 +++
 arch/arc/configs/axs103_defconfig | 5 +
 arch/arc/configs/axs103_smp_defconfig | 5 +
 3 files changed, 13 insertions(+)

diff --git a/arch/arc/configs/axs101_defconfig 
b/arch/arc/configs/axs101_defconfig
index e359099..7c22163 100644
--- a/arch/arc/configs/axs101_defconfig
+++ b/arch/arc/configs/axs101_defconfig
@@ -113,3 +113,6 @@ CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=10
 # CONFIG_SCHED_DEBUG is not set
 # CONFIG_DEBUG_PREEMPT is not set
 # CONFIG_FTRACE is not set
+CONFIG_SOUND=y
+CONFIG_SND=y
+CONFIG_SND_SOC=y
diff --git a/arch/arc/configs/axs103_defconfig 
b/arch/arc/configs/axs103_defconfig
index 323486d..d63aef0 100644
--- a/arch/arc/configs/axs103_defconfig
+++ b/arch/arc/configs/axs103_defconfig
@@ -76,12 +76,14 @@ CONFIG_SERIAL_OF_PLATFORM=y
 CONFIG_I2C=y
 CONFIG_I2C_CHARDEV=y
 CONFIG_I2C_DESIGNWARE_PLATFORM=y
+CONFIG_DRM=y
 # CONFIG_HWMON is not set
 CONFIG_FB=y
 # CONFIG_VGA_CONSOLE is not set
 CONFIG_FRAMEBUFFER_CONSOLE=y
 CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
 CONFIG_LOGO=y
+CONFIG_DRM_I2C_ADV7511=y
 # CONFIG_LOGO_LINUX_MONO is not set
 # CONFIG_LOGO_LINUX_VGA16 is not set
 # CONFIG_LOGO_LINUX_CLUT224 is not set
@@ -114,3 +116,6 @@ CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=10
 # CONFIG_SCHED_DEBUG is not set
 # CONFIG_DEBUG_PREEMPT is not set
 # CONFIG_FTRACE is not set
+CONFIG_SOUND=y
+CONFIG_SND=y
+CONFIG_SND_SOC=y
diff --git a/arch/arc/configs/axs103_smp_defconfig 
b/arch/arc/configs/axs103_smp_defconfig
index 66191cd..f4b51ce 100644
--- a/arch/arc/configs/axs103_smp_defconfig
+++ b/arch/arc/configs/axs103_smp_defconfig
@@ -77,12 +77,14 @@ CONFIG_SERIAL_OF_PLATFORM=y
 CONFIG_I2C=y
 CONFIG_I2C_CHARDEV=y
 CONFIG_I2C_DESIGNWARE_PLATFORM=y
+CONFIG_DRM=y
 # CONFIG_HWMON is not set
 CONFIG_FB=y
 # CONFIG_VGA_CONSOLE is not set
 CONFIG_FRAMEBUFFER_CONSOLE=y
 CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
 CONFIG_LOGO=y
+CONFIG_DRM_I2C_ADV7511=y
 # CONFIG_LOGO_LINUX_MONO is not set
 # CONFIG_LOGO_LINUX_VGA16 is not set
 # CONFIG_LOGO_LINUX_CLUT224 is not set
@@ -115,3 +117,6 @@ CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=10
 # CONFIG_SCHED_DEBUG is not set
 # CONFIG_DEBUG_PREEMPT is not set
 # CONFIG_FTRACE is not set
+CONFIG_SOUND=y
+CONFIG_SND=y
+CONFIG_SND_SOC=y
-- 
2.5.0


___
linux-snps-arc mailing list
linux-snps-arc@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-snps-arc


[PATCH 0/4] Add I2S/ADV7511 audio support for ARC AXS10x boards.

2016-02-19 Thread Carlos Palminha
ARC AXS10x platforms consist of a mainboard with several peripherals.
One of those peripherals is an HDMI output port controlled by ADV7511 
transmitter.

This patch set adds audio for the ADV7511 transmitter and I2S audio for the 
AXS10x platform.
 
Jose Abreu (4):
  drm/i2c/adv7511: Add audio support
  ARC: axs10x: Update defconfigs so that audio is enabled
  ASoC: dwc: Add I2S HDMI audio support using custom platform
  ARC: axs10x: Update defconfigs so that I2S is enabled

 arch/arc/boot/dts/axs10x_mb.dtsi  |   20 +-
 arch/arc/configs/axs101_defconfig |4 +
 arch/arc/configs/axs103_defconfig |6 +
 arch/arc/configs/axs103_smp_defconfig |6 +
 drivers/gpu/drm/i2c/Kconfig   |8 +
 drivers/gpu/drm/i2c/Makefile  |2 +
 drivers/gpu/drm/i2c/adv7511.c | 1024 -
 drivers/gpu/drm/i2c/adv7511.h |   41 ++
 drivers/gpu/drm/i2c/adv7511_audio.c   |  310 ++
 drivers/gpu/drm/i2c/adv7511_core.c| 1005 
 include/sound/soc-dai.h   |1 +
 sound/soc/dwc/Kconfig |1 +
 sound/soc/dwc/Makefile|4 +-
 sound/soc/dwc/designware_i2s.c|  139 -
 sound/soc/dwc/designware_pcm.c|  264 +
 sound/soc/dwc/designware_pcm.h|   21 +
 16 files changed, 1813 insertions(+), 1043 deletions(-)
 delete mode 100644 drivers/gpu/drm/i2c/adv7511.c
 create mode 100644 drivers/gpu/drm/i2c/adv7511_audio.c
 create mode 100644 drivers/gpu/drm/i2c/adv7511_core.c
 create mode 100644 sound/soc/dwc/designware_pcm.c
 create mode 100644 sound/soc/dwc/designware_pcm.h

-- 
2.5.0


___
linux-snps-arc mailing list
linux-snps-arc@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-snps-arc


[PATCH 3/4] ASoC: dwc: Add I2S HDMI audio support using custom platform driver

2016-02-19 Thread Carlos Palminha
From: Jose Abreu 

HDMI audio support was added to the AXS board using an
I2S cpu driver and a custom platform driver.

The platform driver supports two channels @ 16 bits with
rates 32k, 44.1k and 48k. ALSA Simple audio card is used to
glue the cpu, platform and codec driver (adv7511).

Signed-off-by: Jose Abreu 
---
 arch/arc/boot/dts/axs10x_mb.dtsi |  20 ++-
 sound/soc/dwc/Kconfig|   1 +
 sound/soc/dwc/Makefile   |   4 +-
 sound/soc/dwc/designware_i2s.c   | 139 +++--
 sound/soc/dwc/designware_pcm.c   | 264 +++
 sound/soc/dwc/designware_pcm.h   |  21 
 6 files changed, 430 insertions(+), 19 deletions(-)
 create mode 100644 sound/soc/dwc/designware_pcm.c
 create mode 100644 sound/soc/dwc/designware_pcm.h

diff --git a/arch/arc/boot/dts/axs10x_mb.dtsi b/arch/arc/boot/dts/axs10x_mb.dtsi
index e00e5bb..c137376 100644
--- a/arch/arc/boot/dts/axs10x_mb.dtsi
+++ b/arch/arc/boot/dts/axs10x_mb.dtsi
@@ -130,12 +130,23 @@
interrupts = <14>;
};
 
-   i2c@0x1e000 {
-   compatible = "snps,designware-i2c";
+   i2s: i2s@0x1e000 {
+   compatible = "snps,designware-i2s";
reg = <0x1e000 0x100>;
-   clock-frequency = <40>;
-   clocks = <&i2cclk>;
interrupts = <15>;
+   #sound-dai-cells = <0>;
+   };
+
+   sound {
+   compatible = "simple-audio-card";
+   simple-audio-card,name = "AXS10X HDMI Audio";
+   simple-audio-card,format = "i2s";
+   simple-audio-card,cpu {
+   sound-dai = <&i2s>;
+   };
+   simple-audio-card,codec {
+   sound-dai = <&adv7511>;
+   };
};
 
i2c@0x1f000 {
@@ -155,6 +166,7 @@
adi,input-colorspace = "rgb";
adi,input-clock = "1x";
adi,clock-delay = <0x03>;
+   #sound-dai-cells = <0>;
 
ports {
#address-cells = <1>;
diff --git a/sound/soc/dwc/Kconfig b/sound/soc/dwc/Kconfig
index d50e085..bc3fae7 100644
--- a/sound/soc/dwc/Kconfig
+++ b/sound/soc/dwc/Kconfig
@@ -2,6 +2,7 @@ config SND_DESIGNWARE_I2S
tristate "Synopsys I2S Device Driver"
depends on CLKDEV_LOOKUP
select SND_SOC_GENERIC_DMAENGINE_PCM
+   select SND_SIMPLE_CARD
help
 Say Y or M if you want to add support for I2S driver for
 Synopsys desigwnware I2S device. The device supports upto
diff --git a/sound/soc/dwc/Makefile b/sound/soc/dwc/Makefile
index 319371f..4d8f869 100644
--- a/sound/soc/dwc/Makefile
+++ b/sound/soc/dwc/Makefile
@@ -1,3 +1,3 @@
 # SYNOPSYS Platform Support
-obj-$(CONFIG_SND_DESIGNWARE_I2S) += designware_i2s.o
-
+obj-$(CONFIG_SND_DESIGNWARE_I2S) += dwc_i2s.o
+dwc_i2s-y := designware_i2s.o designware_pcm.o
diff --git a/sound/soc/dwc/designware_i2s.c b/sound/soc/dwc/designware_i2s.c
index bff258d..db9aced 100644
--- a/sound/soc/dwc/designware_i2s.c
+++ b/sound/soc/dwc/designware_i2s.c
@@ -25,6 +25,8 @@
 #include 
 #include 
 
+#include "designware_pcm.h"
+
 /* common register for all channel */
 #define IER0x000
 #define IRER   0x004
@@ -84,6 +86,11 @@
 #define MAX_CHANNEL_NUM8
 #define MIN_CHANNEL_NUM2
 
+/* PLL registers addresses */
+#define PLL_IDIV_ADDR  0xE00100A0
+#define PLL_FBDIV_ADDR 0xE00100A4
+#define PLL_ODIV_ADDR  0xE00100A8
+
 union dw_i2s_snd_dma_data {
struct i2s_dma_data pd;
struct snd_dmaengine_dai_dma_data dt;
@@ -100,12 +107,32 @@ struct dw_i2s_dev {
struct device *dev;
u32 ccr;
u32 xfer_resolution;
+   u32 xfer_bytes;
+   u32 fifo_th;
 
/* data related to DMA transfers b/w i2s and DMAC */
union dw_i2s_snd_dma_data play_dma_data;
union dw_i2s_snd_dma_data capture_dma_data;
struct i2s_clk_config_data config;
int (*i2s_clk_cfg)(struct i2s_clk_config_data *config);
+   int (*pcm_get)(u32 *lsample, u32 *rsample, int bytes, int buf_size);
+};
+
+struct dw_i2s_pll {
+   unsigned int rate;
+   unsigned int data_width;
+   unsigned int idiv;
+   unsigned int fbdiv;
+   unsigned int odiv;
+};
+
+static const struct dw_i2s_pll dw_i2s_pll_cfg[] = {
+   { 32000, 16, 0x104, 0x451, 0x10E38 },   /* 32 kHz */
+   { 32000, 32, 0x82, 0x451, 0x10E38 },
+   { 44100, 16, 0x104, 0x596, 0x10D35},/* 44.1 kHz */
+   { 44100, 32, 0x82, 0x596, 0x10D35 },
+   { 48000, 16, 0x208, 0xA28, 0x10B2C },   /* 48 kHz */
+   { 48000, 32, 0x104, 0xA28, 0x10B2C },
 };
 
 static

[PATCH 4/4] ARC: axs10x: Update defconfigs so that I2S is enabled

2016-02-19 Thread Carlos Palminha
From: Jose Abreu 

The defconfigs for the AXS boards were updated to
enable Designware I2S driver.

Signed-off-by: Jose Abreu 
---
 arch/arc/configs/axs101_defconfig | 1 +
 arch/arc/configs/axs103_defconfig | 1 +
 arch/arc/configs/axs103_smp_defconfig | 1 +
 3 files changed, 3 insertions(+)

diff --git a/arch/arc/configs/axs101_defconfig 
b/arch/arc/configs/axs101_defconfig
index 7c22163..dd38d03 100644
--- a/arch/arc/configs/axs101_defconfig
+++ b/arch/arc/configs/axs101_defconfig
@@ -116,3 +116,4 @@ CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=10
 CONFIG_SOUND=y
 CONFIG_SND=y
 CONFIG_SND_SOC=y
+CONFIG_SND_DESIGNWARE_I2S=y
diff --git a/arch/arc/configs/axs103_defconfig 
b/arch/arc/configs/axs103_defconfig
index d63aef0..ff7162e 100644
--- a/arch/arc/configs/axs103_defconfig
+++ b/arch/arc/configs/axs103_defconfig
@@ -119,3 +119,4 @@ CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=10
 CONFIG_SOUND=y
 CONFIG_SND=y
 CONFIG_SND_SOC=y
+CONFIG_SND_DESIGNWARE_I2S=y
diff --git a/arch/arc/configs/axs103_smp_defconfig 
b/arch/arc/configs/axs103_smp_defconfig
index f4b51ce..b9f4671 100644
--- a/arch/arc/configs/axs103_smp_defconfig
+++ b/arch/arc/configs/axs103_smp_defconfig
@@ -120,3 +120,4 @@ CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=10
 CONFIG_SOUND=y
 CONFIG_SND=y
 CONFIG_SND_SOC=y
+CONFIG_SND_DESIGNWARE_I2S=y
-- 
2.5.0


___
linux-snps-arc mailing list
linux-snps-arc@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-snps-arc


[PATCH 3/4] arc: axs10x - add support of ARC PGU

2016-02-19 Thread Alexey Brodkin
Synopsys DesignWare ARC SDP boards sport ARC SDP display
controller attached to ADV7511 HDMI encoder.

That change adds desctiption of both ARC PGU and ADV7511 in
ARC SDP'd base-board Device Tree.

Signed-off-by: Alexey Brodkin 
Cc: Rob Herring 
Cc: Pawel Moll 
Cc: Mark Rutland 
Cc: Ian Campbell 
Cc: Kumar Gala 
Cc: Vineet Gupta 
Cc: devicet...@vger.kernel.org
Cc: linux-snps-arc@lists.infradead.org
---
 arch/arc/boot/dts/axs10x_mb.dtsi | 54 
 1 file changed, 54 insertions(+)

diff --git a/arch/arc/boot/dts/axs10x_mb.dtsi b/arch/arc/boot/dts/axs10x_mb.dtsi
index 44a578c..0d50bc3 100644
--- a/arch/arc/boot/dts/axs10x_mb.dtsi
+++ b/arch/arc/boot/dts/axs10x_mb.dtsi
@@ -147,6 +147,37 @@
clocks = <&i2cclk>;
interrupts = <16>;
 
+   adv7511:adv7511@0x39{
+   compatible="adi,adv7511";
+   reg = <0x39>;
+   interrupts = <23>;
+   adi,input-depth = <8>;
+   adi,input-colorspace = "rgb";
+   adi,input-clock = "1x";
+   adi,clock-delay = <0x03>;
+
+   ports {
+   #address-cells = <1>;
+   #size-cells = <0>;
+
+   /* RGB/YUV input */
+   port@0 {
+   reg = <0>;
+   adv7511_input:endpoint {
+   remote-endpoint = <&pgu_output>;
+   };
+   };
+
+   /* HDMI output */
+   port@1 {
+   reg = <1>;
+   adv7511_output: endpoint {
+   remote-endpoint = 
<&hdmi_connector_in>;
+   };
+   };
+   };
+   };
+
eeprom@0x54{
compatible = "24c01";
reg = <0x54>;
@@ -160,6 +191,16 @@
};
};
 
+   hdmi0: connector {
+   compatible = "hdmi-connector";
+   type = "a";
+   port {
+   hdmi_connector_in: endpoint {
+   remote-endpoint = <&adv7511_output>;
+   };
+   };
+   };
+
gpio0:gpio@13000 {
compatible = "snps,dw-apb-gpio";
reg = <0x13000 0x1000>;
@@ -221,5 +262,18 @@
reg = <2>;
};
};
+
+   pgu@0x17000 {
+   compatible = "snps,arcpgu";
+   reg = <0x17000 0x400>;
+   encoder-slave = <&adv7511>;
+   interrupts = <5>;
+
+   port {
+   pgu_output: endpoint {
+   remote-endpoint = <&adv7511_input>;
+   };
+   };
+   };
};
 };
-- 
2.5.0


___
linux-snps-arc mailing list
linux-snps-arc@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-snps-arc


[PATCH 0/4] drm: Add support of ARC PGU display controller

2016-02-19 Thread Alexey Brodkin
This series add support of ARC PGU display controller.
ARC PGU is a quite simple byte streamer that gets data from the framebuffer
and pushes it to hte connected encoder (DP or HDMI).

It was tested on ARC SDP boards (axs101 in particular).

Alexey Brodkin (4):
  drm: Add support of ARC PGU display controller
  drm: Add DT bindings documentation for ARC PGU display controller
  arc: axs10x - add support of ARC PGU
  MAINTAINERS: Add maintainer for ARC PGU display controller

 .../devicetree/bindings/display/snps,arcpgu.txt|  74 ++
 MAINTAINERS|   6 +
 arch/arc/boot/dts/axs10x_mb.dtsi   |  54 
 drivers/gpu/drm/Kconfig|   2 +
 drivers/gpu/drm/Makefile   |   1 +
 drivers/gpu/drm/arc/Kconfig|  10 +
 drivers/gpu/drm/arc/Makefile   |   2 +
 drivers/gpu/drm/arc/arcpgu.h   |  47 
 drivers/gpu/drm/arc/arcpgu_crtc.c  | 274 +
 drivers/gpu/drm/arc/arcpgu_drv.c   | 239 ++
 drivers/gpu/drm/arc/arcpgu_hdmi.c  | 204 +++
 drivers/gpu/drm/arc/arcpgu_regs.h  |  36 +++
 12 files changed, 949 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/display/snps,arcpgu.txt
 create mode 100644 drivers/gpu/drm/arc/Kconfig
 create mode 100644 drivers/gpu/drm/arc/Makefile
 create mode 100644 drivers/gpu/drm/arc/arcpgu.h
 create mode 100644 drivers/gpu/drm/arc/arcpgu_crtc.c
 create mode 100644 drivers/gpu/drm/arc/arcpgu_drv.c
 create mode 100644 drivers/gpu/drm/arc/arcpgu_hdmi.c
 create mode 100644 drivers/gpu/drm/arc/arcpgu_regs.h

-- 
2.5.0


___
linux-snps-arc mailing list
linux-snps-arc@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-snps-arc


[PATCH 1/4] drm: Add support of ARC PGU display controller

2016-02-19 Thread Alexey Brodkin
for more details.
+ *
+ */
+
+#include 
+#include 
+#include 
+#include 
+#include 
+
+#include "arcpgu.h"
+#include "arcpgu_regs.h"
+
+static void arcpgu_fb_output_poll_changed(struct drm_device *dev)
+{
+   struct arcpgu_drm_private *arcpgu = dev->dev_private;
+
+   if (arcpgu->fbdev)
+   drm_fbdev_cma_hotplug_event(arcpgu->fbdev);
+}
+
+static int arcpgu_atomic_commit(struct drm_device *dev,
+   struct drm_atomic_state *state, bool async)
+{
+   return drm_atomic_helper_commit(dev, state, false);
+}
+
+static struct drm_mode_config_funcs arcpgu_drm_modecfg_funcs = {
+   .fb_create  = drm_fb_cma_create,
+   .output_poll_changed = arcpgu_fb_output_poll_changed,
+   .atomic_check = drm_atomic_helper_check,
+   .atomic_commit = arcpgu_atomic_commit,
+};
+
+static void arcpgu_setup_mode_config(struct drm_device *drm)
+{
+   drm_mode_config_init(drm);
+   drm->mode_config.min_width = 0;
+   drm->mode_config.min_height = 0;
+   drm->mode_config.max_width = 1920;
+   drm->mode_config.max_height = 1080;
+   drm->mode_config.funcs = &arcpgu_drm_modecfg_funcs;
+}
+
+static const struct file_operations arcpgu_drm_ops = {
+   .owner = THIS_MODULE,
+   .open = drm_open,
+   .release = drm_release,
+   .unlocked_ioctl = drm_ioctl,
+#ifdef CONFIG_COMPAT
+   .compat_ioctl = drm_compat_ioctl,
+#endif
+   .poll = drm_poll,
+   .read = drm_read,
+   .llseek = no_llseek,
+   .mmap = drm_gem_cma_mmap,
+};
+
+static void arcpgu_preclose(struct drm_device *drm, struct drm_file *file)
+{
+   struct arcpgu_drm_private *arcpgu = drm->dev_private;
+   struct drm_pending_vblank_event *e, *t;
+   unsigned long flags;
+
+   spin_lock_irqsave(&drm->event_lock, flags);
+   list_for_each_entry_safe(e, t, &arcpgu->event_list, base.link) {
+   if (e->base.file_priv != file)
+   continue;
+   list_del(&e->base.link);
+   e->base.destroy(&e->base);
+   }
+   spin_unlock_irqrestore(&drm->event_lock, flags);
+}
+
+static void arcpgu_lastclose(struct drm_device *drm)
+{
+   struct arcpgu_drm_private *arcpgu = drm->dev_private;
+
+   drm_fbdev_cma_restore_mode(arcpgu->fbdev);
+}
+
+static int arcpgu_load(struct drm_device *drm, unsigned long flags)
+{
+   struct platform_device *pdev = drm->platformdev;
+   struct arcpgu_drm_private *arcpgu;
+   struct device_node *encoder_node;
+   struct resource *res;
+   int ret;
+
+   arcpgu = devm_kzalloc(&pdev->dev, sizeof(*arcpgu), GFP_KERNEL);
+   if (arcpgu == NULL)
+   return -ENOMEM;
+
+   drm->dev_private = arcpgu;
+
+   arcpgu->clk = devm_clk_get(drm->dev, "pxlclk");
+   if (IS_ERR(arcpgu->clk))
+   return PTR_ERR(arcpgu->clk);
+
+   INIT_LIST_HEAD(&arcpgu->event_list);
+
+   arcpgu_setup_mode_config(drm);
+
+   res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+   arcpgu->regs = devm_ioremap_resource(&pdev->dev, res);
+   if (IS_ERR(arcpgu->regs)) {
+   dev_err(drm->dev, "Could not remap IO mem\n");
+   return PTR_ERR(arcpgu->regs);
+   }
+
+   dev_info(drm->dev, "arc_pgu ID: 0x%x\n",
+arc_pgu_read(arcpgu, ARCPGU_REG_ID));
+
+   if (dma_set_mask_and_coherent(drm->dev, DMA_BIT_MASK(32)))
+   return -ENODEV;
+
+   if (arc_pgu_setup_crtc(drm) < 0)
+   return -ENODEV;
+
+   /* find the encoder node and initialize it */
+   encoder_node = of_parse_phandle(drm->dev->of_node, "encoder-slave", 0);
+   if (!encoder_node) {
+   dev_err(drm->dev, "failed to get an encoder slave node\n");
+   return -ENODEV;
+   }
+
+   ret = arcpgu_drm_hdmi_init(drm, encoder_node);
+   if (ret < 0)
+   return ret;
+
+   drm_mode_config_reset(drm);
+   drm_kms_helper_poll_init(drm);
+
+   arcpgu->fbdev = drm_fbdev_cma_init(drm, 16, drm->mode_config.num_crtc,
+ drm->mode_config.num_connector);
+   if (IS_ERR(arcpgu->fbdev)) {
+   ret = PTR_ERR(arcpgu->fbdev);
+   arcpgu->fbdev = NULL;
+   return -ENODEV;
+   }
+
+   platform_set_drvdata(pdev, arcpgu);
+   return 0;
+}
+
+int arcpgu_unload(struct drm_device *drm)
+{
+   struct arcpgu_drm_private *arcpgu = drm->dev_private;
+
+   if (arcpgu->fbdev) {
+   drm_fbdev_cma_fini(arcpgu->fbdev);
+   arcpgu->fbdev = NULL;
+   }
+   drm_kms_helper_poll_fini(drm);
+   drm_vblank_cleanup(drm);
+   drm_mode_config_cleanup(drm);
+
+   return 0;
+}
+

[PATCH 2/4] drm: Add DT bindings documentation for ARC PGU display controller

2016-02-19 Thread Alexey Brodkin
This add DT bindings documentation for ARC PGU display controller.

Signed-off-by: Alexey Brodkin 
Cc: Rob Herring 
Cc: Pawel Moll 
Cc: Mark Rutland 
Cc: Ian Campbell 
Cc: Kumar Gala 
Cc: devicet...@vger.kernel.org
Cc: linux-snps-arc@lists.infradead.org
---
 .../devicetree/bindings/display/snps,arcpgu.txt| 74 ++
 1 file changed, 74 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/display/snps,arcpgu.txt

diff --git a/Documentation/devicetree/bindings/display/snps,arcpgu.txt 
b/Documentation/devicetree/bindings/display/snps,arcpgu.txt
new file mode 100644
index 000..c8382fb
--- /dev/null
+++ b/Documentation/devicetree/bindings/display/snps,arcpgu.txt
@@ -0,0 +1,74 @@
+ARC PGU
+
+This is a display controller found on several development boards produced
+by Synopsys. The ARC PGU is an RGB streamer that reads the data from a
+framebuffer and sends it to a single digital encoder (usually HDMI).
+
+Required properties:
+  - compatible: "snps,arcpgu"
+  - reg: Physical base address and length of the controller's registers.
+  - clocks: A list of phandle + clock-specifier pairs, one for each
+entry in 'clock-names'.
+  - clock-names: A list of clock names. For ARC PGU it should contain:
+  - "pxlclk" for the clock feeding the output PLL of the controller.
+  - encoder-slave: Phandle of encoder chip.
+
+Required sub-nodes:
+  - port: The PGU connection to an encoder chip. The connection is modelled
+using the OF graph bindings specified in
+Documentation/devicetree/bindings/graph.txt.
+
+Example:
+
+/ {
+   ...
+
+   pgu@0x {
+   compatible = "snps,arcpgu";
+   reg = <0x 0x400>;
+   clocks = <&clock_node>;
+   clock-names = "pxlclk";
+   encoder-slave = <&encoder_node>;
+
+   port {
+   pgu_output: endpoint {
+   remote-endpoint = <&hdmi_enc_input>;
+   };
+   };
+   };
+
+   /* HDMI encoder on I2C bus */
+   i2c@0x {
+   compatible = "...";
+
+   encoder_node:encoder_node@0x{
+   compatible="...";
+
+   ports {
+   port@0 {
+   reg = <0>;
+   hdmi_enc_input:endpoint {
+   remote-endpoint = <&pgu_output>;
+   };
+   };
+
+   port@1 {
+   reg = <1>;
+   hdmi_enc_output:endpoint {
+   remote-endpoint = 
<&hdmi_connector_in>;
+   };
+   };
+   };
+   };
+   }
+
+   hdmi0: connector {
+   compatible = "hdmi-connector";
+
+   port {
+   hdmi_connector_in: endpoint {
+   remote-endpoint = <&hdmi_enc_output>;
+   };
+   };
+   };
+};
-- 
2.5.0


___
linux-snps-arc mailing list
linux-snps-arc@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-snps-arc


[PATCH 4/4] MAINTAINERS: Add maintainer for ARC PGU display controller

2016-02-19 Thread Alexey Brodkin
This updates MAINTEINERS file with information about maintainer of
ARC PGU display controller driver.

Signed-off-by: Alexey Brodkin 
Cc: linux-snps-arc@lists.infradead.org
---
 MAINTAINERS | 6 ++
 1 file changed, 6 insertions(+)

diff --git a/MAINTAINERS b/MAINTAINERS
index 28cd72b..26ac58c 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -847,6 +847,12 @@ S: Maintained
 F: drivers/net/arcnet/
 F: include/uapi/linux/if_arcnet.h
 
+ARC PGU DRM DRIVER
+M: Alexey Brodkin 
+S: Supported
+F: drivers/gpu/drm/arc/
+F: Documentation/devicetree/bindings/display/snps,arcpgu.txt
+
 ARM HDLCD DRM DRIVER
 M: Liviu Dudau 
 S: Supported
-- 
2.5.0


___
linux-snps-arc mailing list
linux-snps-arc@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-snps-arc


Re: [PATCH v5 3/3] irqchip: add nps Internal and external irqchips

2016-02-19 Thread Jason Cooper
Hey Noam,

Could you please re-send and attach a changelog:

On Thu, Feb 11, 2016 at 08:40:59PM +0200, Noam Camus wrote:
> From: Noam Camus 
> 
> Adding EZchip NPS400 support.
> NPS internal interrupts are internally handled at
> Multi Thread Manager (MTM) that is signaled for deactivating
> an interrupt.
> External interrupts is handled also at Global Interrupt
> Controller (GIC) e.g. serial and network devices.
> 
> Signed-off-by: Noam Camus 
> Cc: Thomas Gleixner 
> Cc: Jason Cooper 
> Cc: Marc Zyngier 
> ---

* here?

>  .../interrupt-controller/ezchip,nps400-ic.txt  |   17 +++
>  drivers/irqchip/Kconfig|6 +
>  drivers/irqchip/Makefile   |1 +
>  drivers/irqchip/irq-eznps.c|  149 
> 
>  4 files changed, 173 insertions(+), 0 deletions(-)
>  create mode 100644 
> Documentation/devicetree/bindings/interrupt-controller/ezchip,nps400-ic.txt
>  create mode 100644 drivers/irqchip/irq-eznps.c

Thanks, it greatly assists review.  If you need an example, please take
a look at the patch submitted this morning by Thomas Petazzoni [1].

thx,

Jason.

[1] 
https://lkml.kernel.org/r/145583-5127-1-git-send-email-thomas.petazz...@free-electrons.com

___
linux-snps-arc mailing list
linux-snps-arc@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-snps-arc


Re: [PATCH v5 3/3] irqchip: add nps Internal and external irqchips

2016-02-19 Thread Noam Camus
Hi Jason,

The patch set got change log, see cover letter that summarize all changes with 
respect to whole set.
https://lkml.org/lkml/2016/2/11/609

Let me know if it works for you.

Noam


___
linux-snps-arc mailing list
linux-snps-arc@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-snps-arc