Re: [PATCH] staging: ion: remove from the tree

2020-08-28 Thread Greg Kroah-Hartman
On Thu, Aug 27, 2020 at 11:54:12AM -0700, John Stultz wrote:
> On Thu, Aug 27, 2020 at 10:17 AM Greg Kroah-Hartman
>  wrote:
> > On Thu, Aug 27, 2020 at 10:31:41PM +0530, Amit Pundir wrote:
> > > I don't know what is the right thing to do here. I just want to
> > > highlight that AOSP's audio (codec2) HAL depends on the ION system
> > > heap and it will break AOSP for people who boot mainline on their
> > > devices, even for just testing purpose like we do in Linaro. Right now
> > > we need only 1 (Android specific out-of-tree) patch to boot AOSP with
> > > mainline and Sumit is already trying to upstream that vma naming
> > > patch. Removal of in-kernel ION, will just add more to that delta.
> >
> > As AOSP will continue to rely on ION after December of this year, all
> > you are doing is postponing the inevitable a few more months.
> >
> > Push back on the Android team to fix up the code to not use ION, they
> > know this needs to happen.
> 
> The point though, is your main premise that no one is using this isn't true.

They are using the version of ion in the Android kernel tree, yes, as it
has new features that many people are relying on.

The version that is currently in the kernel tree is crippled, and maybe
works for some use cases, but not the majority, right?

> I'm actively working with Hridya and folks on the codec2 HAL side to
> transition this on the userland side:
>   https://android-review.googlesource.com/c/platform/frameworks/av/+/1368918/3
> 
> I'd like AOSP to not use ION after September (though being external I
> can't promise anything), much less continuing after December.

The android team has said they will be dropping ION use for the "next"
Android release, which is sometime next year from what I recall.
December is probably not going to happen :)

> I want this migration to happen as much as anyone.  But I'd prefer to
> keep ION in staging until after the LTS is announced. Having both
> around helps development for the transition, which helps us have a
> reliable solution, which helps vendors to migrate and be able to do
> comparative performance testing.

I don't understand what having this in the "next" kernel helps us with
here.  And I would really really prefer to NOT have an outdated version
of this code in a kernel tree that I am going to have to support for the
next X number of years, when no one is using that version of the driver.

What is this LTS fixation to keep this code around for?  Who does it
help?

> I do appreciate that keeping it isn't free, but I also don't feel the
> chaos-monkey approach here is really motivational in the way you
> intend.

I don't see it helping anyone to leave this around, except to cause
merge issues for me, and development issues for other developers.

Anyone who really wants this code, can easily revert the deletion and
move on and grab the AOSP copy of the code.  That's what they did when
we deleted other Android features that are still relied on.

Given that the "isn't free" is causing _me_ real pain, and not the
actual users of this code, I am leaning toward wanting to move that
pain/cost to those users, for obvious reasons.

thanks,

greg k-h
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH v6 0/8] clk: clk-wizard: clock-wizard: Driver updates

2020-08-28 Thread Shubhrajyoti Datta
In the thread [1] Greg suggested that we move the driver
to the clk from the staging.
Add patches to address the concerns regarding the fractional and
set rate support in the TODO.

The patch set does the following
- Trivial fixes for kernel doc.
- Move the driver to the clk folder
- Add capability to set rate.
- Add fractional support.
- Add support for configurable outputs.
- Make the output names unique so that multiple instances
do not crib.

Changes in the v3:
Added the cover-letter.
Add patches for rate setting and fractional support
Add patches for warning.
Remove the driver from staging as suggested

v4:
Reorder the patches.
Merge the CLK_IS_BASIC patch.
Add the yaml form of binding document

v5:
Fix a mismerge

v6:
Fix the yaml warning
use poll timedout

[1] https://spinics.net/lists/linux-driver-devel/msg117326.html

Shubhrajyoti Datta (8):
  dt-bindings: add documentation of xilinx clocking wizard
  clk: clock-wizard: Add the clockwizard to clk directory
  clk: clock-wizard: Fix kernel-doc warning
  clk: clock-wizard: Add support for dynamic reconfiguration
  clk: clock-wizard: Add support for fractional support
  clk: clock-wizard: Remove the hardcoding of the clock outputs
  clk: clock-wizard: Update the fixed factor divisors
  staging: clocking-wizard: Delete the driver from the staging

 .../bindings/clock/xlnx,clocking-wizard.yaml   |  71 +++
 drivers/clk/Kconfig|   9 +
 drivers/clk/Makefile   |   1 +
 drivers/clk/clk-xlnx-clock-wizard.c| 657 +
 drivers/staging/Kconfig|   2 -
 drivers/staging/Makefile   |   1 -
 drivers/staging/clocking-wizard/Kconfig|  10 -
 drivers/staging/clocking-wizard/Makefile   |   2 -
 drivers/staging/clocking-wizard/TODO   |  12 -
 .../clocking-wizard/clk-xlnx-clock-wizard.c| 333 ---
 drivers/staging/clocking-wizard/dt-binding.txt |  30 -
 11 files changed, 738 insertions(+), 390 deletions(-)
 create mode 100644 
Documentation/devicetree/bindings/clock/xlnx,clocking-wizard.yaml
 create mode 100644 drivers/clk/clk-xlnx-clock-wizard.c
 delete mode 100644 drivers/staging/clocking-wizard/Kconfig
 delete mode 100644 drivers/staging/clocking-wizard/Makefile
 delete mode 100644 drivers/staging/clocking-wizard/TODO
 delete mode 100644 drivers/staging/clocking-wizard/clk-xlnx-clock-wizard.c
 delete mode 100644 drivers/staging/clocking-wizard/dt-binding.txt

-- 
2.1.1

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH v6 2/8] clk: clock-wizard: Add the clockwizard to clk directory

2020-08-28 Thread Shubhrajyoti Datta
Add clocking wizard driver to clk.

Signed-off-by: Shubhrajyoti Datta 
---
 drivers/clk/Kconfig |   9 +
 drivers/clk/Makefile|   1 +
 drivers/clk/clk-xlnx-clock-wizard.c | 338 
 3 files changed, 348 insertions(+)
 create mode 100644 drivers/clk/clk-xlnx-clock-wizard.c

diff --git a/drivers/clk/Kconfig b/drivers/clk/Kconfig
index 4026fac..a0e29dd 100644
--- a/drivers/clk/Kconfig
+++ b/drivers/clk/Kconfig
@@ -359,6 +359,15 @@ config COMMON_CLK_FIXED_MMIO
help
  Support for Memory Mapped IO Fixed clocks
 
+config COMMON_CLK_XLNX_CLKWZRD
+   tristate "Xilinx Clocking Wizard"
+   depends on COMMON_CLK && OF
+   help
+ Support for the Xilinx Clocking Wizard IP core clock generator.
+ Adds support for clocking wizard and compatible.
+ This driver supports the Xilinx clocking wizard programmable clock
+ synthesizer. The number of output is configurable in the design.
+
 source "drivers/clk/actions/Kconfig"
 source "drivers/clk/analogbits/Kconfig"
 source "drivers/clk/baikal-t1/Kconfig"
diff --git a/drivers/clk/Makefile b/drivers/clk/Makefile
index da8fcf1..1ad6414 100644
--- a/drivers/clk/Makefile
+++ b/drivers/clk/Makefile
@@ -69,6 +69,7 @@ obj-$(CONFIG_ARCH_VT8500) += clk-vt8500.o
 obj-$(CONFIG_COMMON_CLK_VC5)   += clk-versaclock5.o
 obj-$(CONFIG_COMMON_CLK_WM831X)+= clk-wm831x.o
 obj-$(CONFIG_COMMON_CLK_XGENE) += clk-xgene.o
+obj-$(CONFIG_COMMON_CLK_XLNX_CLKWZRD)  += clk-xlnx-clock-wizard.o
 
 # please keep this section sorted lexicographically by directory path name
 obj-y  += actions/
diff --git a/drivers/clk/clk-xlnx-clock-wizard.c 
b/drivers/clk/clk-xlnx-clock-wizard.c
new file mode 100644
index 000..b31524a
--- /dev/null
+++ b/drivers/clk/clk-xlnx-clock-wizard.c
@@ -0,0 +1,338 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Xilinx 'Clocking Wizard' driver
+ *
+ *  Copyright (C) 2013 - 2020 Xilinx
+ *
+ *  Sören Brinkmann 
+ *  Shubhrajyoti Datta 
+ *
+ */
+
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+
+#define WZRD_NUM_OUTPUTS   7
+#define WZRD_ACLK_MAX_FREQ 25000UL
+
+#define WZRD_CLK_CFG_REG(n)(0x200 + 4 * (n))
+
+#define WZRD_CLKOUT0_FRAC_EN   BIT(18)
+#define WZRD_CLKFBOUT_FRAC_EN  BIT(26)
+
+#define WZRD_CLKFBOUT_MULT_SHIFT   8
+#define WZRD_CLKFBOUT_MULT_MASK(0xff << 
WZRD_CLKFBOUT_MULT_SHIFT)
+#define WZRD_DIVCLK_DIVIDE_SHIFT   0
+#define WZRD_DIVCLK_DIVIDE_MASK(0xff << 
WZRD_DIVCLK_DIVIDE_SHIFT)
+#define WZRD_CLKOUT_DIVIDE_SHIFT   0
+#define WZRD_CLKOUT_DIVIDE_MASK(0xff << 
WZRD_DIVCLK_DIVIDE_SHIFT)
+
+enum clk_wzrd_int_clks {
+   wzrd_clk_mul,
+   wzrd_clk_mul_div,
+   wzrd_clk_int_max
+};
+
+/**
+ * struct clk_wzrd:
+ * @clk_data:  Clock data
+ * @nb:Notifier block
+ * @base:  Memory base
+ * @clk_in1:   Handle to input clock 'clk_in1'
+ * @axi_clk:   Handle to input clock 's_axi_aclk'
+ * @clks_internal: Internal clocks
+ * @clkout:Output clocks
+ * @speed_grade:   Speed grade of the device
+ * @suspended: Flag indicating power state of the device
+ */
+struct clk_wzrd {
+   struct clk_onecell_data clk_data;
+   struct notifier_block nb;
+   void __iomem *base;
+   struct clk *clk_in1;
+   struct clk *axi_clk;
+   struct clk *clks_internal[wzrd_clk_int_max];
+   struct clk *clkout[WZRD_NUM_OUTPUTS];
+   unsigned int speed_grade;
+   bool suspended;
+};
+
+#define to_clk_wzrd(_nb) container_of(_nb, struct clk_wzrd, nb)
+
+/* maximum frequencies for input/output clocks per speed grade */
+static const unsigned long clk_wzrd_max_freq[] = {
+   8UL,
+   93300UL,
+   106600UL
+};
+
+static int clk_wzrd_clk_notifier(struct notifier_block *nb, unsigned long 
event,
+void *data)
+{
+   unsigned long max;
+   struct clk_notifier_data *ndata = data;
+   struct clk_wzrd *clk_wzrd = to_clk_wzrd(nb);
+
+   if (clk_wzrd->suspended)
+   return NOTIFY_OK;
+
+   if (ndata->clk == clk_wzrd->clk_in1)
+   max = clk_wzrd_max_freq[clk_wzrd->speed_grade - 1];
+   else if (ndata->clk == clk_wzrd->axi_clk)
+   max = WZRD_ACLK_MAX_FREQ;
+   else
+   return NOTIFY_DONE; /* should never happen */
+
+   switch (event) {
+   case PRE_RATE_CHANGE:
+   if (ndata->new_rate > max)
+   return NOTIFY_BAD;
+   return NOTIFY_OK;
+   case POST_RATE_CHANGE:
+   case ABORT_RATE_CHANGE:
+   default:
+   return NOTIFY_DONE;
+   }
+}
+
+static int __maybe_unused clk_wzrd_suspend(struct device *dev)
+{
+   struct clk_wzrd *clk_wzrd = dev_get_drvdata(dev);
+
+ 

[PATCH v6 3/8] clk: clock-wizard: Fix kernel-doc warning

2020-08-28 Thread Shubhrajyoti Datta
Update description for the clocking wizard structure

Signed-off-by: Shubhrajyoti Datta 
---
 drivers/clk/clk-xlnx-clock-wizard.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/clk/clk-xlnx-clock-wizard.c 
b/drivers/clk/clk-xlnx-clock-wizard.c
index b31524a..d6577c8 100644
--- a/drivers/clk/clk-xlnx-clock-wizard.c
+++ b/drivers/clk/clk-xlnx-clock-wizard.c
@@ -40,7 +40,8 @@ enum clk_wzrd_int_clks {
 };
 
 /**
- * struct clk_wzrd:
+ * struct clk_wzrd - Clock wizard private data structure
+ *
  * @clk_data:  Clock data
  * @nb:Notifier block
  * @base:  Memory base
-- 
2.1.1

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH v6 5/8] clk: clock-wizard: Add support for fractional support

2020-08-28 Thread Shubhrajyoti Datta
Currently the set rate granularity is to integral divisors.
Add support for the fractional divisors.
Only the first output0 is fractional in the hardware.

Signed-off-by: Shubhrajyoti Datta 
---
v6:
remove unnecessary typecast
remove unnecessary locks
use polled timeout

 drivers/clk/clk-xlnx-clock-wizard.c | 166 +---
 1 file changed, 153 insertions(+), 13 deletions(-)

diff --git a/drivers/clk/clk-xlnx-clock-wizard.c 
b/drivers/clk/clk-xlnx-clock-wizard.c
index 8dfcec8..1af59a4 100644
--- a/drivers/clk/clk-xlnx-clock-wizard.c
+++ b/drivers/clk/clk-xlnx-clock-wizard.c
@@ -29,20 +29,25 @@
 
 #define WZRD_CLKFBOUT_MULT_SHIFT   8
 #define WZRD_CLKFBOUT_MULT_MASK(0xff << 
WZRD_CLKFBOUT_MULT_SHIFT)
+#define WZRD_CLKFBOUT_FRAC_SHIFT   16
+#define WZRD_CLKFBOUT_FRAC_MASK(0x3ff << 
WZRD_CLKFBOUT_FRAC_SHIFT)
 #define WZRD_DIVCLK_DIVIDE_SHIFT   0
 #define WZRD_DIVCLK_DIVIDE_MASK(0xff << 
WZRD_DIVCLK_DIVIDE_SHIFT)
 #define WZRD_CLKOUT_DIVIDE_SHIFT   0
 #define WZRD_CLKOUT_DIVIDE_WIDTH   8
 #define WZRD_CLKOUT_DIVIDE_MASK(0xff << 
WZRD_DIVCLK_DIVIDE_SHIFT)
+#define WZRD_CLKOUT_FRAC_SHIFT 8
+#define WZRD_CLKOUT_FRAC_MASK  0x3ff
 
 #define WZRD_DR_MAX_INT_DIV_VALUE  255
-#define WZRD_DR_NUM_RETRIES1
 #define WZRD_DR_STATUS_REG_OFFSET  0x04
 #define WZRD_DR_LOCK_BIT_MASK  0x0001
 #define WZRD_DR_INIT_REG_OFFSET0x25C
 #define WZRD_DR_DIV_TO_PHASE_OFFSET4
 #define WZRD_DR_BEGIN_DYNA_RECONF  0x03
 
+#define WZRD_USEC_POLL 10
+#define WZRD_TIMEOUT_POLL  1000
 /* Get the mask from width */
 #define div_mask(width)((1 << (width)) - 1)
 
@@ -52,6 +57,7 @@
 enum clk_wzrd_int_clks {
wzrd_clk_mul,
wzrd_clk_mul_div,
+   wzrd_clk_mul_frac,
wzrd_clk_int_max
 };
 
@@ -185,6 +191,134 @@ static const struct clk_ops clk_wzrd_clk_divider_ops = {
.recalc_rate = clk_wzrd_recalc_rate,
 };
 
+static unsigned long clk_wzrd_recalc_ratef(struct clk_hw *hw,
+  unsigned long parent_rate)
+{
+   unsigned int val;
+   u32 div, frac;
+   struct clk_wzrd_divider *divider = to_clk_wzrd_divider(hw);
+   void __iomem *div_addr = divider->base + divider->offset;
+
+   val = readl(div_addr);
+   div = val & div_mask(divider->width);
+   frac = (val >> WZRD_CLKOUT_FRAC_SHIFT) & WZRD_CLKOUT_FRAC_MASK;
+
+   return ((parent_rate * 1000) / ((div * 1000) + frac));
+}
+
+static int clk_wzrd_dynamic_reconfig_f(struct clk_hw *hw, unsigned long rate,
+  unsigned long parent_rate)
+{
+   int err;
+   u32 value, pre;
+   unsigned long rate_div, f, clockout0_div;
+   struct clk_wzrd_divider *divider = to_clk_wzrd_divider(hw);
+   void __iomem *div_addr = divider->base + divider->offset;
+
+   rate_div = ((parent_rate * 1000) / rate);
+   clockout0_div = rate_div / 1000;
+
+   pre = DIV_ROUND_CLOSEST((parent_rate * 1000), rate);
+   f = (u32)(pre - (clockout0_div * 1000));
+   f = f & WZRD_CLKOUT_FRAC_MASK;
+
+   value = ((f << WZRD_CLKOUT_DIVIDE_WIDTH) | (clockout0_div &
+   WZRD_CLKOUT_DIVIDE_MASK));
+
+   /* Set divisor and clear phase offset */
+   writel(value, div_addr);
+   writel(0x0, div_addr + WZRD_DR_DIV_TO_PHASE_OFFSET);
+
+   /* Check status register */
+   err= readl_poll_timeout(divider->base + WZRD_DR_STATUS_REG_OFFSET, 
value,
+   value & WZRD_DR_LOCK_BIT_MASK,
+   WZRD_USEC_POLL, WZRD_TIMEOUT_POLL);
+   if (err)
+   return err;
+
+   /* Initiate reconfiguration */
+   writel(WZRD_DR_BEGIN_DYNA_RECONF,
+  divider->base + WZRD_DR_INIT_REG_OFFSET);
+
+   /* Check status register */
+   err= readl_poll_timeout(divider->base + WZRD_DR_STATUS_REG_OFFSET, 
value,
+   value & WZRD_DR_LOCK_BIT_MASK,
+   WZRD_USEC_POLL, WZRD_TIMEOUT_POLL);
+
+   return err;
+}
+
+static long clk_wzrd_round_rate_f(struct clk_hw *hw, unsigned long rate,
+ unsigned long *prate)
+{
+   return rate;
+}
+
+static const struct clk_ops clk_wzrd_clk_divider_ops_f = {
+   .round_rate = clk_wzrd_round_rate_f,
+   .set_rate = clk_wzrd_dynamic_reconfig_f,
+   .recalc_rate = clk_wzrd_recalc_ratef,
+};
+
+static struct clk *clk_wzrd_register_divf(struct device *dev,
+ const char *name,
+ const char *parent_name,
+ unsigned long flags,
+ void __iomem *base, u16 offset,
+ u8 shift, u8 width,
+ u8 clk

[PATCH v6 8/8] staging: clocking-wizard: Delete the driver from the staging

2020-08-28 Thread Shubhrajyoti Datta
Delete the driver from the staging as it is in drivers/clk.

Signed-off-by: Shubhrajyoti Datta 
Acked-by: Greg Kroah-Hartman 
---
 drivers/staging/Kconfig|   2 -
 drivers/staging/Makefile   |   1 -
 drivers/staging/clocking-wizard/Kconfig|  10 -
 drivers/staging/clocking-wizard/Makefile   |   2 -
 drivers/staging/clocking-wizard/TODO   |  12 -
 .../clocking-wizard/clk-xlnx-clock-wizard.c| 333 -
 drivers/staging/clocking-wizard/dt-binding.txt |  30 --
 7 files changed, 390 deletions(-)
 delete mode 100644 drivers/staging/clocking-wizard/Kconfig
 delete mode 100644 drivers/staging/clocking-wizard/Makefile
 delete mode 100644 drivers/staging/clocking-wizard/TODO
 delete mode 100644 drivers/staging/clocking-wizard/clk-xlnx-clock-wizard.c
 delete mode 100644 drivers/staging/clocking-wizard/dt-binding.txt

diff --git a/drivers/staging/Kconfig b/drivers/staging/Kconfig
index e6c831c..bae49c6 100644
--- a/drivers/staging/Kconfig
+++ b/drivers/staging/Kconfig
@@ -76,8 +76,6 @@ source "drivers/staging/gs_fpgaboot/Kconfig"
 
 source "drivers/staging/unisys/Kconfig"
 
-source "drivers/staging/clocking-wizard/Kconfig"
-
 source "drivers/staging/fbtft/Kconfig"
 
 source "drivers/staging/fsl-dpaa2/Kconfig"
diff --git a/drivers/staging/Makefile b/drivers/staging/Makefile
index a3b1fd0..f5a3e57 100644
--- a/drivers/staging/Makefile
+++ b/drivers/staging/Makefile
@@ -28,7 +28,6 @@ obj-$(CONFIG_FIREWIRE_SERIAL) += fwserial/
 obj-$(CONFIG_GOLDFISH) += goldfish/
 obj-$(CONFIG_GS_FPGABOOT)  += gs_fpgaboot/
 obj-$(CONFIG_UNISYSSPAR)   += unisys/
-obj-$(CONFIG_COMMON_CLK_XLNX_CLKWZRD)  += clocking-wizard/
 obj-$(CONFIG_FB_TFT)   += fbtft/
 obj-$(CONFIG_FSL_DPAA2)+= fsl-dpaa2/
 obj-$(CONFIG_MOST) += most/
diff --git a/drivers/staging/clocking-wizard/Kconfig 
b/drivers/staging/clocking-wizard/Kconfig
deleted file mode 100644
index 69cf514..000
--- a/drivers/staging/clocking-wizard/Kconfig
+++ /dev/null
@@ -1,10 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-#
-# Xilinx Clocking Wizard Driver
-#
-
-config COMMON_CLK_XLNX_CLKWZRD
-   tristate "Xilinx Clocking Wizard"
-   depends on COMMON_CLK && OF && IOMEM
-   help
- Support for the Xilinx Clocking Wizard IP core clock generator.
diff --git a/drivers/staging/clocking-wizard/Makefile 
b/drivers/staging/clocking-wizard/Makefile
deleted file mode 100644
index b1f9152..000
--- a/drivers/staging/clocking-wizard/Makefile
+++ /dev/null
@@ -1,2 +0,0 @@
-# SPDX-License-Identifier: GPL-2.0
-obj-$(CONFIG_COMMON_CLK_XLNX_CLKWZRD)  += clk-xlnx-clock-wizard.o
diff --git a/drivers/staging/clocking-wizard/TODO 
b/drivers/staging/clocking-wizard/TODO
deleted file mode 100644
index ebe99db..000
--- a/drivers/staging/clocking-wizard/TODO
+++ /dev/null
@@ -1,12 +0,0 @@
-TODO:
-   - support for fractional multiplier
-   - support for fractional divider (output 0 only)
-   - support for set_rate() operations (may benefit from Stephen Boyd's
- refactoring of the clk primitives: https://lkml.org/lkml/2014/9/5/766)
-   - review arithmetic
- - overflow after multiplication?
- - maximize accuracy before divisions
-
-Patches to:
-   Greg Kroah-Hartman 
-   Sören Brinkmann 
diff --git a/drivers/staging/clocking-wizard/clk-xlnx-clock-wizard.c 
b/drivers/staging/clocking-wizard/clk-xlnx-clock-wizard.c
deleted file mode 100644
index e52a64b..000
--- a/drivers/staging/clocking-wizard/clk-xlnx-clock-wizard.c
+++ /dev/null
@@ -1,333 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-/*
- * Xilinx 'Clocking Wizard' driver
- *
- *  Copyright (C) 2013 - 2014 Xilinx
- *
- *  Sören Brinkmann 
- */
-
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-#include 
-
-#define WZRD_NUM_OUTPUTS   7
-#define WZRD_ACLK_MAX_FREQ 25000UL
-
-#define WZRD_CLK_CFG_REG(n)(0x200 + 4 * (n))
-
-#define WZRD_CLKOUT0_FRAC_EN   BIT(18)
-#define WZRD_CLKFBOUT_FRAC_EN  BIT(26)
-
-#define WZRD_CLKFBOUT_MULT_SHIFT   8
-#define WZRD_CLKFBOUT_MULT_MASK(0xff << 
WZRD_CLKFBOUT_MULT_SHIFT)
-#define WZRD_DIVCLK_DIVIDE_SHIFT   0
-#define WZRD_DIVCLK_DIVIDE_MASK(0xff << 
WZRD_DIVCLK_DIVIDE_SHIFT)
-#define WZRD_CLKOUT_DIVIDE_SHIFT   0
-#define WZRD_CLKOUT_DIVIDE_MASK(0xff << 
WZRD_DIVCLK_DIVIDE_SHIFT)
-
-enum clk_wzrd_int_clks {
-   wzrd_clk_mul,
-   wzrd_clk_mul_div,
-   wzrd_clk_int_max
-};
-
-/**
- * struct clk_wzrd:
- * @clk_data:  Clock data
- * @nb:Notifier block
- * @base:  Memory base
- * @clk_in1:   Handle to input clock 'clk_in1'
- * @axi_clk:   Handle to input clock 's_axi_aclk'
- * @clks_internal: Internal clocks
- * @clkout:Output clocks
- * @speed_grade:   Speed grade of the device
- * @suspended: Flag 

[PATCH v6 6/8] clk: clock-wizard: Remove the hardcoding of the clock outputs

2020-08-28 Thread Shubhrajyoti Datta
The number of output clocks are configurable in the hardware.
Currently the driver registers the maximum number of outputs.
Fix the same by registering only the outputs that are there.

Signed-off-by: Shubhrajyoti Datta 
---
v4:
Assign output in this patch

 drivers/clk/clk-xlnx-clock-wizard.c | 6 --
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/clk/clk-xlnx-clock-wizard.c 
b/drivers/clk/clk-xlnx-clock-wizard.c
index 1af59a4..ded4cdd 100644
--- a/drivers/clk/clk-xlnx-clock-wizard.c
+++ b/drivers/clk/clk-xlnx-clock-wizard.c
@@ -442,6 +442,7 @@ static int clk_wzrd_probe(struct platform_device *pdev)
const char *clk_name;
struct clk_wzrd *clk_wzrd;
struct resource *mem;
+   int outputs;
struct device_node *np = pdev->dev.of_node;
 
clk_wzrd = devm_kzalloc(&pdev->dev, sizeof(*clk_wzrd), GFP_KERNEL);
@@ -512,6 +513,7 @@ static int clk_wzrd_probe(struct platform_device *pdev)
goto err_disable_clk;
}
 
+   outputs = of_property_count_strings(np, "clock-output-names");
/* register div */
reg = (readl(clk_wzrd->base + WZRD_CLK_CFG_REG(0)) &
WZRD_DIVCLK_DIVIDE_MASK) >> WZRD_DIVCLK_DIVIDE_SHIFT;
@@ -533,7 +535,7 @@ static int clk_wzrd_probe(struct platform_device *pdev)
}
 
/* register div per output */
-   for (i = WZRD_NUM_OUTPUTS - 1; i >= 0 ; i--) {
+   for (i = outputs - 1; i >= 0 ; i--) {
const char *clkout_name;
 
if (of_property_read_string_index(np, "clock-output-names", i,
@@ -564,7 +566,7 @@ static int clk_wzrd_probe(struct platform_device *pdev)
if (IS_ERR(clk_wzrd->clkout[i])) {
int j;
 
-   for (j = i + 1; j < WZRD_NUM_OUTPUTS; j++)
+   for (j = i + 1; j < outputs; j++)
clk_unregister(clk_wzrd->clkout[j]);
dev_err(&pdev->dev,
"unable to register divider clock\n");
-- 
2.1.1

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH v6 1/8] dt-bindings: add documentation of xilinx clocking wizard

2020-08-28 Thread Shubhrajyoti Datta
Add the devicetree binding for the xilinx clocking wizard.

Signed-off-by: Shubhrajyoti Datta 
---
v6:
Fix a yaml warning

 .../bindings/clock/xlnx,clocking-wizard.yaml   | 71 ++
 1 file changed, 71 insertions(+)
 create mode 100644 
Documentation/devicetree/bindings/clock/xlnx,clocking-wizard.yaml

diff --git a/Documentation/devicetree/bindings/clock/xlnx,clocking-wizard.yaml 
b/Documentation/devicetree/bindings/clock/xlnx,clocking-wizard.yaml
new file mode 100644
index 000..ca63593
--- /dev/null
+++ b/Documentation/devicetree/bindings/clock/xlnx,clocking-wizard.yaml
@@ -0,0 +1,71 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/clock/xlnx,clocking-wizard.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Xilinx clocking wizard
+
+maintainers:
+  - Shubhrajyoti Datta 
+
+description: |
+  The clocking wizard is a soft ip clocking block of Xilinx versal. It
+  reads required input clock frequencies from the devicetree and acts as clock
+  clock output.
+
+select: false
+
+properties:
+  compatible:
+items:
+  - enum:
+  - xlnx,clocking-wizard
+  - xlnx,clocking-wizard-6.0
+
+  "#clock-cells":
+const: 1
+
+  clocks:
+description: List of clock specifiers which are external input
+  clocks to the given clock controller.
+items:
+  - description: clock input
+  - description: axi clock
+
+  clock-names:
+items:
+  - const: clk_in1
+  - const: s_axi_aclk
+
+  speed-grade:
+allOf:
+  - $ref: /schemas/types.yaml#/definitions/uint32
+  - enum: [1, 2, 3]
+description:
+  Speed grade of the device.
+maxItems: 1
+
+required:
+  - compatible
+  - "#clock-cells"
+  - clocks
+  - clock-names
+  - speed-grade
+
+additionalProperties: false
+
+examples:
+  - |
+clock-generator@4004 {
+#clock-cells = <1>;
+reg = <0x4004 0x1000>;
+compatible = "xlnx,clk-wizard-1.0";
+speed-grade = <1>;
+clock-names = "clk_in1", "s_axi_aclk";
+clocks = <&clkc 15>, <&clkc 15>;
+clock-output-names = "clk_out1", "clk_out2",
+"clk_out3", "clk_out4", "clk_out5",
+"clk_out6", "clk_out7";
+};
+...
-- 
2.1.1

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH v6 4/8] clk: clock-wizard: Add support for dynamic reconfiguration

2020-08-28 Thread Shubhrajyoti Datta
The patch adds support for dynamic reconfiguration of clock output rate.
Output clocks are registered as dividers and set rate callback function
is used for dynamic reconfiguration.

Based on the initial work from Chirag.

Signed-off-by: Chirag Parekh 
Signed-off-by: Shubhrajyoti Datta 
---
v6:
Remove the typecast.
use min for capping frequency.
use polled timeout

 drivers/clk/clk-xlnx-clock-wizard.c | 185 ++--
 1 file changed, 179 insertions(+), 6 deletions(-)

diff --git a/drivers/clk/clk-xlnx-clock-wizard.c 
b/drivers/clk/clk-xlnx-clock-wizard.c
index d6577c8..8dfcec8 100644
--- a/drivers/clk/clk-xlnx-clock-wizard.c
+++ b/drivers/clk/clk-xlnx-clock-wizard.c
@@ -17,6 +17,7 @@
 #include 
 #include 
 #include 
+#include 
 
 #define WZRD_NUM_OUTPUTS   7
 #define WZRD_ACLK_MAX_FREQ 25000UL
@@ -31,8 +32,23 @@
 #define WZRD_DIVCLK_DIVIDE_SHIFT   0
 #define WZRD_DIVCLK_DIVIDE_MASK(0xff << 
WZRD_DIVCLK_DIVIDE_SHIFT)
 #define WZRD_CLKOUT_DIVIDE_SHIFT   0
+#define WZRD_CLKOUT_DIVIDE_WIDTH   8
 #define WZRD_CLKOUT_DIVIDE_MASK(0xff << 
WZRD_DIVCLK_DIVIDE_SHIFT)
 
+#define WZRD_DR_MAX_INT_DIV_VALUE  255
+#define WZRD_DR_NUM_RETRIES1
+#define WZRD_DR_STATUS_REG_OFFSET  0x04
+#define WZRD_DR_LOCK_BIT_MASK  0x0001
+#define WZRD_DR_INIT_REG_OFFSET0x25C
+#define WZRD_DR_DIV_TO_PHASE_OFFSET4
+#define WZRD_DR_BEGIN_DYNA_RECONF  0x03
+
+/* Get the mask from width */
+#define div_mask(width)((1 << (width)) - 1)
+
+/* Extract divider instance from clock hardware instance */
+#define to_clk_wzrd_divider(_hw) container_of(_hw, struct clk_wzrd_divider, hw)
+
 enum clk_wzrd_int_clks {
wzrd_clk_mul,
wzrd_clk_mul_div,
@@ -64,6 +80,29 @@ struct clk_wzrd {
bool suspended;
 };
 
+/**
+ * struct clk_wzrd_divider - clock divider specific to clk_wzrd
+ *
+ * @hw:handle between common and hardware-specific interfaces
+ * @base:  base address of register containing the divider
+ * @offset:offset address of register containing the divider
+ * @shift: shift to the divider bit field
+ * @width: width of the divider bit field
+ * @flags: clk_wzrd divider flags
+ * @table: array of value/divider pairs, last entry should have div = 0
+ * @lock:  register lock
+ */
+struct clk_wzrd_divider {
+   struct clk_hw hw;
+   void __iomem *base;
+   u16 offset;
+   u8 shift;
+   u8 width;
+   u8 flags;
+   const struct clk_div_table *table;
+   spinlock_t *lock;  /* divider lock */
+};
+
 #define to_clk_wzrd(_nb) container_of(_nb, struct clk_wzrd, nb)
 
 /* maximum frequencies for input/output clocks per speed grade */
@@ -73,6 +112,136 @@ static const unsigned long clk_wzrd_max_freq[] = {
106600UL
 };
 
+/* spin lock variable for clk_wzrd */
+static DEFINE_SPINLOCK(clkwzrd_lock);
+
+static unsigned long clk_wzrd_recalc_rate(struct clk_hw *hw,
+ unsigned long parent_rate)
+{
+   struct clk_wzrd_divider *divider = to_clk_wzrd_divider(hw);
+   void __iomem *div_addr = divider->base + divider->offset;
+   unsigned int val;
+
+   val = readl(div_addr) >> divider->shift;
+   val &= div_mask(divider->width);
+
+   return divider_recalc_rate(hw, parent_rate, val, divider->table,
+   divider->flags, divider->width);
+}
+
+static int clk_wzrd_dynamic_reconfig(struct clk_hw *hw, unsigned long rate,
+unsigned long parent_rate)
+{
+   int err = 0;
+   u32 value;
+   struct clk_wzrd_divider *divider = to_clk_wzrd_divider(hw);
+   void __iomem *div_addr = divider->base + divider->offset;
+
+   value = DIV_ROUND_CLOSEST(parent_rate, rate);
+
+   /* Cap the value to max */
+   min(value, (u32)WZRD_DR_MAX_INT_DIV_VALUE);
+
+   /* Set divisor and clear phase offset */
+   writel(value, div_addr);
+   writel(0x00, div_addr + WZRD_DR_DIV_TO_PHASE_OFFSET);
+
+   /* Check status register */
+   err = readl_poll_timeout(divider->base + WZRD_DR_STATUS_REG_OFFSET, 
value,
+   value & WZRD_DR_LOCK_BIT_MASK,
+   WZRD_USEC_POLL, WZRD_TIMEOUT_POLL);
+   if (err)
+   return err;
+
+   /* Initiate reconfiguration */
+   writel(WZRD_DR_BEGIN_DYNA_RECONF,
+  divider->base + WZRD_DR_INIT_REG_OFFSET);
+
+   /* Check status register */
+   err = readl_poll_timeout(divider->base + WZRD_DR_STATUS_REG_OFFSET, 
value,
+   value & WZRD_DR_LOCK_BIT_MASK,
+   WZRD_USEC_POLL, WZRD_TIMEOUT_POLL);
+
+   return err;
+}
+
+static long clk_wzrd_round_rate(struct clk_hw *hw, unsigned long rate,
+   unsigned long *prate)
+{
+   u8 div;
+
+   /*
+* since we don't

[PATCH v6 7/8] clk: clock-wizard: Update the fixed factor divisors

2020-08-28 Thread Shubhrajyoti Datta
Update the fixed factor clock registration to register the divisors.

Signed-off-by: Shubhrajyoti Datta 
---
 drivers/clk/clk-xlnx-clock-wizard.c | 13 -
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/drivers/clk/clk-xlnx-clock-wizard.c 
b/drivers/clk/clk-xlnx-clock-wizard.c
index ded4cdd..fd69eb0 100644
--- a/drivers/clk/clk-xlnx-clock-wizard.c
+++ b/drivers/clk/clk-xlnx-clock-wizard.c
@@ -440,9 +440,11 @@ static int clk_wzrd_probe(struct platform_device *pdev)
u32 reg, reg_f, mult;
unsigned long rate;
const char *clk_name;
+   void __iomem *ctrl_reg;
struct clk_wzrd *clk_wzrd;
struct resource *mem;
int outputs;
+   unsigned long flags = 0;
struct device_node *np = pdev->dev.of_node;
 
clk_wzrd = devm_kzalloc(&pdev->dev, sizeof(*clk_wzrd), GFP_KERNEL);
@@ -514,16 +516,17 @@ static int clk_wzrd_probe(struct platform_device *pdev)
}
 
outputs = of_property_count_strings(np, "clock-output-names");
-   /* register div */
-   reg = (readl(clk_wzrd->base + WZRD_CLK_CFG_REG(0)) &
-   WZRD_DIVCLK_DIVIDE_MASK) >> WZRD_DIVCLK_DIVIDE_SHIFT;
+   if (outputs == 1)
+   flags = CLK_SET_RATE_PARENT;
clk_name = kasprintf(GFP_KERNEL, "%s_mul_div", dev_name(&pdev->dev));
if (!clk_name) {
ret = -ENOMEM;
goto err_rm_int_clk;
}
 
-   clk_wzrd->clks_internal[wzrd_clk_mul_div] = clk_register_fixed_factor
+   ctrl_reg = clk_wzrd->base + WZRD_CLK_CFG_REG(0);
+   /* register div */
+   clk_wzrd->clks_internal[wzrd_clk_mul_div] = clk_register_divider
(&pdev->dev, clk_name,
 __clk_get_name(clk_wzrd->clks_internal[wzrd_clk_mul]),
flags, ctrl_reg, 0, 8, CLK_DIVIDER_ONE_BASED |
@@ -548,7 +551,7 @@ static int clk_wzrd_probe(struct platform_device *pdev)
if (!i)
clk_wzrd->clkout[i] = clk_wzrd_register_divf
(&pdev->dev, clkout_name,
-   clk_name, 0,
+   clk_name, flags,
clk_wzrd->base, (WZRD_CLK_CFG_REG(2) + i * 12),
WZRD_CLKOUT_DIVIDE_SHIFT,
WZRD_CLKOUT_DIVIDE_WIDTH,
-- 
2.1.1

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH v2 28/47] staging: vchi: Get rid of vchiq_shim's message callback

2020-08-28 Thread Jacopo Mondi
Hi Nicolas,

   I'm working on a v2 of the bcm2835-isp support which was sent along
with UNICAM v4l2 driver and some misc changes you have collected in
this series. Reference to v1:
https://lore.kernel.org/linux-media/20200504092611.9798-1-laurent.pinch...@ideasonboard.com/

On Mon, Jun 29, 2020 at 05:09:26PM +0200, Nicolas Saenz Julienne wrote:
> As vchiq_shim's callback does nothing aside from pushing messages into
> the service's queue, let's bypass it and jump directly to the service's
> callbacks, letting them choose whether to use the message queue.

I admit this patch caused me some pain, as after a few days chasing
why the ISP got stuck in importing buffers into the VPU through the vc-sm-cma
driver I realized that this patch removed a significant part of the
process..

>
> It turns out most services don't need to use the message queue, which
> makes for simpler code in the end.
>
> -
> - if (reason == VCHIQ_MESSAGE_AVAILABLE)
> - vchiq_msg_queue_push(service->handle, header);

This one '-.-

I wonder if this was intentional and it is expected all services now
handle the message queue (it seems so according to your commit
message).

Fair enough, I could add in the vc-sma-cma callback a call to
vchiq_msg_queue_push() but I wonder if it wouldn't be better to do so
in vchiq_core.c:parse_rx_slots(), just before calling the service's
callback, so that this has not to be re-implemented in all services.

What would you suggest ?

And by the way I see mmal-vchiq.c:service_callback() releasing
messages but never pushing them to the queue. Is this intended as well ?

Thanks
  j

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH] staging: ion: remove from the tree

2020-08-28 Thread John Stultz
On Fri, Aug 28, 2020 at 1:05 AM Greg Kroah-Hartman
 wrote:
>
> On Thu, Aug 27, 2020 at 11:54:12AM -0700, John Stultz wrote:
> > On Thu, Aug 27, 2020 at 10:17 AM Greg Kroah-Hartman
> >  wrote:
> > > On Thu, Aug 27, 2020 at 10:31:41PM +0530, Amit Pundir wrote:
> > > > I don't know what is the right thing to do here. I just want to
> > > > highlight that AOSP's audio (codec2) HAL depends on the ION system
> > > > heap and it will break AOSP for people who boot mainline on their
> > > > devices, even for just testing purpose like we do in Linaro. Right now
> > > > we need only 1 (Android specific out-of-tree) patch to boot AOSP with
> > > > mainline and Sumit is already trying to upstream that vma naming
> > > > patch. Removal of in-kernel ION, will just add more to that delta.
> > >
> > > As AOSP will continue to rely on ION after December of this year, all
> > > you are doing is postponing the inevitable a few more months.
> > >
> > > Push back on the Android team to fix up the code to not use ION, they
> > > know this needs to happen.
> >
> > The point though, is your main premise that no one is using this isn't true.
>
> They are using the version of ion in the Android kernel tree, yes, as it
> has new features that many people are relying on.
>
> The version that is currently in the kernel tree is crippled, and maybe
> works for some use cases, but not the majority, right?

So my understanding is the Android Common Kernel tree version was
mostly reworked to allow heaps as modules, and allowed heaps to have
their own exporter logic (not unlike how dmabuf heaps do it). The main
allocation interface is maybe slightly tweaked for out-of-tree vendor
heaps, but doesn't affect the in-staging heaps. There's also a few
optimizations we have skipped taking upstream. So yes, there are
differences, but I don't feel your characterization is quite accurate.


> > I'm actively working with Hridya and folks on the codec2 HAL side to
> > transition this on the userland side:
> >   
> > https://android-review.googlesource.com/c/platform/frameworks/av/+/1368918/3
> >
> > I'd like AOSP to not use ION after September (though being external I
> > can't promise anything), much less continuing after December.
>
> The android team has said they will be dropping ION use for the "next"
> Android release, which is sometime next year from what I recall.
> December is probably not going to happen :)

AOSP is what the next Android release forks off of, so it needs to be
fixed first.

> > I want this migration to happen as much as anyone.  But I'd prefer to
> > keep ION in staging until after the LTS is announced. Having both
> > around helps development for the transition, which helps us have a
> > reliable solution, which helps vendors to migrate and be able to do
> > comparative performance testing.
>
> I don't understand what having this in the "next" kernel helps us with
> here.  And I would really really prefer to NOT have an outdated version
> of this code in a kernel tree that I am going to have to support for the
> next X number of years, when no one is using that version of the driver.
>
> What is this LTS fixation to keep this code around for?  Who does it
> help?

Vendors usually target LTS releases for their hardware bringups.
Having a LTS release with both ION and DMA BUF Heaps helps them
validate their old ION solution as performant, and then migrate to DMA
BUF Heaps and be able to do performance comparisons holding all other
things equal.

> > I do appreciate that keeping it isn't free, but I also don't feel the
> > chaos-monkey approach here is really motivational in the way you
> > intend.
>
> I don't see it helping anyone to leave this around, except to cause
> merge issues for me, and development issues for other developers.
>
> Anyone who really wants this code, can easily revert the deletion and
> move on and grab the AOSP copy of the code.  That's what they did when
> we deleted other Android features that are still relied on.
>
> Given that the "isn't free" is causing _me_ real pain, and not the
> actual users of this code, I am leaning toward wanting to move that
> pain/cost to those users, for obvious reasons.

Sure. Again, I do understand the desire to remove it, and it's your
right to do so. Keeping the code for an extra year in LTS (over 5.4)
is a cost, so I understand if you drop it. But I'll ask that you make
that judgement clear as the main motivator/rationale of the commit
message, rather than flippantly pretending it's not being used, and
that everyone agrees it has no usefulness to keep around (especially
after we've had this conversation a few times already this year).

thanks
-john
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH v6 1/8] dt-bindings: add documentation of xilinx clocking wizard

2020-08-28 Thread Rob Herring
On Fri, Aug 28, 2020 at 07:09:49PM +0530, Shubhrajyoti Datta wrote:
> Add the devicetree binding for the xilinx clocking wizard.
> 
> Signed-off-by: Shubhrajyoti Datta 
> ---
> v6:
> Fix a yaml warning
> 
>  .../bindings/clock/xlnx,clocking-wizard.yaml   | 71 
> ++
>  1 file changed, 71 insertions(+)
>  create mode 100644 
> Documentation/devicetree/bindings/clock/xlnx,clocking-wizard.yaml
> 
> diff --git 
> a/Documentation/devicetree/bindings/clock/xlnx,clocking-wizard.yaml 
> b/Documentation/devicetree/bindings/clock/xlnx,clocking-wizard.yaml
> new file mode 100644
> index 000..ca63593
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/clock/xlnx,clocking-wizard.yaml
> @@ -0,0 +1,71 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/clock/xlnx,clocking-wizard.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Xilinx clocking wizard
> +
> +maintainers:
> +  - Shubhrajyoti Datta 
> +
> +description: |
> +  The clocking wizard is a soft ip clocking block of Xilinx versal. It
> +  reads required input clock frequencies from the devicetree and acts as 
> clock
> +  clock output.
> +
> +select: false
> +
> +properties:
> +  compatible:
> +items:
> +  - enum:

You can drop 'items' since there is only 1.

> +  - xlnx,clocking-wizard
> +  - xlnx,clocking-wizard-6.0
> +
> +  "#clock-cells":
> +const: 1
> +
> +  clocks:
> +description: List of clock specifiers which are external input
> +  clocks to the given clock controller.

Drop this. That's every 'clocks' property.

> +items:
> +  - description: clock input
> +  - description: axi clock
> +
> +  clock-names:
> +items:
> +  - const: clk_in1
> +  - const: s_axi_aclk
> +
> +  speed-grade:

Needs a vendor prefix.

> +allOf:

You can remove the 'allOf'.

> +  - $ref: /schemas/types.yaml#/definitions/uint32
> +  - enum: [1, 2, 3]
> +description:
> +  Speed grade of the device.
> +maxItems: 1

Drop this. A 'uint32' is always 1 item.

> +
> +required:
> +  - compatible
> +  - "#clock-cells"
> +  - clocks
> +  - clock-names
> +  - speed-grade
> +
> +additionalProperties: false
> +
> +examples:
> +  - |
> +clock-generator@4004 {
> +#clock-cells = <1>;
> +reg = <0x4004 0x1000>;
> +compatible = "xlnx,clk-wizard-1.0";

Doesn't match the schema.

> +speed-grade = <1>;
> +clock-names = "clk_in1", "s_axi_aclk";
> +clocks = <&clkc 15>, <&clkc 15>;
> +clock-output-names = "clk_out1", "clk_out2",
> +"clk_out3", "clk_out4", "clk_out5",
> +"clk_out6", "clk_out7";
> +};
> +...
> -- 
> 2.1.1
> 
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


The Project

2020-08-28 Thread Hon. Ms. Reem
Hello,

My name is Ms. Reem Ebrahim Al-Hashimi, I am the "Minister of state and 
Petroleum" also "Minister of 

State for International Cooperation" in UAE.  I write to you on behalf of my 
other "three (3) 

colleagues" who has approved me to solicit for your "partnership in claiming of 
{us$47=Million}" 

from a Financial Home in Cambodia on their behalf and for our "Mutual Benefits".

The Fund {us$47=Million} is our share from the (Over-invoiced) Oil/Gas deal 
with Cambodian/Vietnam 

Government within  2013/2014, however, We don't want our government to know 
about the fund. If this 

proposal interests you, let me know, by sending me an email and I will send to 
you detailed 

information on how this business would be successfully transacted. Be informed 
that nobody knows 

about the secret of this fund except us, and we know how to carry out the 
entire transaction. So I 

am compelled to ask, that you will stand on our behalf and receive this fund 
into any account that 

is solely controlled by you.

We will compensate you with 30% of the total amount involved as gratification 
for being our partner 

in this transaction. Reply to my private email as stated: 
honreemebrahimal-hash...@yandex.com

Regards,
Ms. Reem Ebrahim Al-Hashimi.
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[staging:staging-testing] BUILD SUCCESS cc34073c6248e9cec801bf690d1455f264d12357

2020-08-28 Thread kernel test robot
tree/branch: https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git 
 staging-testing
branch HEAD: cc34073c6248e9cec801bf690d1455f264d12357  staging: emxx_udc: Fix 
passing of NULL to dma_alloc_coherent()

elapsed time: 723m

configs tested: 87
configs skipped: 8

The following configs have been built successfully.
More configs may be tested in the coming days.

arm defconfig
arm64allyesconfig
arm64   defconfig
arm  allyesconfig
arm  allmodconfig
x86_64   allyesconfig
m68k   m5208evb_defconfig
m68kmvme147_defconfig
openriscor1ksim_defconfig
sh   se7722_defconfig
pariscgeneric-64bit_defconfig
mips   rs90_defconfig
m68k   bvme6000_defconfig
powerpc  mpc866_ads_defconfig
powerpc pq2fads_defconfig
m68k apollo_defconfig
m68k allyesconfig
armqcom_defconfig
mips  maltasmvp_eva_defconfig
nios2allyesconfig
nios2alldefconfig
microblazenommu_defconfig
mipsmalta_kvm_guest_defconfig
mips  cavium_octeon_defconfig
arc nps_defconfig
arm   spear13xx_defconfig
arcnsim_700_defconfig
mips  rb532_defconfig
sh  lboxre2_defconfig
ia64 allmodconfig
ia64defconfig
ia64 allyesconfig
m68k allmodconfig
m68kdefconfig
nios2   defconfig
arc  allyesconfig
nds32 allnoconfig
c6x  allyesconfig
nds32   defconfig
cskydefconfig
alpha   defconfig
alphaallyesconfig
xtensa   allyesconfig
h8300allyesconfig
arc defconfig
sh   allmodconfig
parisc  defconfig
s390 allyesconfig
parisc   allyesconfig
s390defconfig
i386 allyesconfig
sparcallyesconfig
sparc   defconfig
i386defconfig
mips allyesconfig
mips allmodconfig
powerpc defconfig
powerpc  allyesconfig
powerpc  allmodconfig
powerpc   allnoconfig
i386 randconfig-a002-20200828
i386 randconfig-a005-20200828
i386 randconfig-a003-20200828
i386 randconfig-a004-20200828
i386 randconfig-a001-20200828
i386 randconfig-a006-20200828
x86_64   randconfig-a015-20200828
x86_64   randconfig-a012-20200828
x86_64   randconfig-a016-20200828
x86_64   randconfig-a014-20200828
x86_64   randconfig-a011-20200828
x86_64   randconfig-a013-20200828
i386 randconfig-a013-20200828
i386 randconfig-a012-20200828
i386 randconfig-a011-20200828
i386 randconfig-a016-20200828
i386 randconfig-a014-20200828
i386 randconfig-a015-20200828
riscvallyesconfig
riscv allnoconfig
riscv   defconfig
riscvallmodconfig
x86_64   rhel
x86_64rhel-7.6-kselftests
x86_64  defconfig
x86_64   rhel-8.3
x86_64  kexec

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[driver-core:driver-core-linus] BUILD SUCCESS 40b8b826a6998639dd1c26f0e127f18371e1058d

2020-08-28 Thread kernel test robot
tree/branch: 
https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git  
driver-core-linus
branch HEAD: 40b8b826a6998639dd1c26f0e127f18371e1058d  kobject: Restore old 
behaviour of kobject_del(NULL)

elapsed time: 723m

configs tested: 85
configs skipped: 6

The following configs have been built successfully.
More configs may be tested in the coming days.

arm defconfig
arm64allyesconfig
arm64   defconfig
arm  allyesconfig
arm  allmodconfig
arm cm_x300_defconfig
arcnsim_700_defconfig
armmmp2_defconfig
armcerfcube_defconfig
mipsvocore2_defconfig
sh   rts7751r2dplus_defconfig
powerpc   allnoconfig
arm axm55xx_defconfig
sh   alldefconfig
mips  fuloong2e_defconfig
arc nsimosci_hs_smp_defconfig
arm   cns3420vb_defconfig
s390  debug_defconfig
alphaalldefconfig
m68k   m5208evb_defconfig
arm   sama5_defconfig
nds32alldefconfig
arm   corgi_defconfig
m68k   m5275evb_defconfig
armmvebu_v7_defconfig
ia64 allmodconfig
ia64defconfig
ia64 allyesconfig
m68k allmodconfig
m68kdefconfig
m68k allyesconfig
nds32   defconfig
nios2allyesconfig
cskydefconfig
alpha   defconfig
alphaallyesconfig
xtensa   allyesconfig
h8300allyesconfig
arc defconfig
sh   allmodconfig
nios2   defconfig
arc  allyesconfig
nds32 allnoconfig
c6x  allyesconfig
parisc  defconfig
s390 allyesconfig
parisc   allyesconfig
s390defconfig
i386 allyesconfig
sparcallyesconfig
sparc   defconfig
i386defconfig
mips allyesconfig
mips allmodconfig
powerpc  allyesconfig
powerpc  allmodconfig
powerpc defconfig
i386 randconfig-a002-20200828
i386 randconfig-a005-20200828
i386 randconfig-a003-20200828
i386 randconfig-a004-20200828
i386 randconfig-a001-20200828
i386 randconfig-a006-20200828
x86_64   randconfig-a015-20200828
x86_64   randconfig-a012-20200828
x86_64   randconfig-a016-20200828
x86_64   randconfig-a014-20200828
x86_64   randconfig-a011-20200828
x86_64   randconfig-a013-20200828
i386 randconfig-a013-20200828
i386 randconfig-a012-20200828
i386 randconfig-a011-20200828
i386 randconfig-a016-20200828
i386 randconfig-a014-20200828
i386 randconfig-a015-20200828
riscvallyesconfig
riscv allnoconfig
riscv   defconfig
riscvallmodconfig
x86_64   rhel
x86_64   allyesconfig
x86_64rhel-7.6-kselftests
x86_64  defconfig
x86_64   rhel-8.3
x86_64  kexec

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH] Staging: rtl8723bs: os_dep: fixed some coding style issues

2020-08-28 Thread Ross Schmidt
Fixed some coding style issues.

Signed-off-by: Ross Schmidt 
---
 drivers/staging/rtl8723bs/os_dep/sdio_intf.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/staging/rtl8723bs/os_dep/sdio_intf.c 
b/drivers/staging/rtl8723bs/os_dep/sdio_intf.c
index f1e2829a19a7..2b2f4505b98b 100644
--- a/drivers/staging/rtl8723bs/os_dep/sdio_intf.c
+++ b/drivers/staging/rtl8723bs/os_dep/sdio_intf.c
@@ -121,6 +121,7 @@ extern unsigned int oob_irq;
 static irqreturn_t gpio_hostwakeup_irq_thread(int irq, void *data)
 {
struct adapter *padapter = data;
+
DBG_871X_LEVEL(_drv_always_, "gpio_hostwakeup_irq_thread\n");
/* Disable interrupt before calling handler */
/* disable_irq_nosync(oob_irq); */
@@ -131,6 +132,7 @@ static irqreturn_t gpio_hostwakeup_irq_thread(int irq, void 
*data)
 static u8 gpio_hostwakeup_alloc_irq(struct adapter *padapter)
 {
int err;
+
if (oob_irq == 0) {
DBG_871X("oob_irq ZERO!\n");
return _FAIL;
-- 
2.26.2

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel