[driver-core:driver-core-testing] BUILD SUCCESS e7deeb9d79d8691f1e6c4c6707471ec3d7b9886b

2021-07-22 Thread kernel test robot
tree/branch: 
https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git 
driver-core-testing
branch HEAD: e7deeb9d79d8691f1e6c4c6707471ec3d7b9886b  driver: base: Prefer 
unsigned int to bare use of unsigned

elapsed time: 1233m

configs tested: 165
configs skipped: 3

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

gcc tested configs:
arm defconfig
arm64allyesconfig
arm64   defconfig
arm  allyesconfig
arm  allmodconfig
i386 randconfig-c001-20210722
i386 randconfig-c001-20210720
mips tb0287_defconfig
m68k   m5475evb_defconfig
mips  fuloong2e_defconfig
shapsh4ad0a_defconfig
h8300   h8s-sim_defconfig
mips  cavium_octeon_defconfig
arm  pxa168_defconfig
xtensageneric_kc705_defconfig
powerpc pq2fads_defconfig
powerpc  pasemi_defconfig
mips   rs90_defconfig
sh ecovec24_defconfig
mips   jazz_defconfig
sh  sdk7786_defconfig
arm   stm32_defconfig
arm   viper_defconfig
mipsvocore2_defconfig
sh  rsk7201_defconfig
powerpc ps3_defconfig
m68k apollo_defconfig
sparcalldefconfig
mips   ci20_defconfig
sh  lboxre2_defconfig
arm   sama5_defconfig
arm mxs_defconfig
arm   aspeed_g5_defconfig
powerpc  ppc64e_defconfig
armxcep_defconfig
powerpc mpc834x_mds_defconfig
shtitan_defconfig
arcnsim_700_defconfig
riscv  rv32_defconfig
nds32alldefconfig
sh  rsk7269_defconfig
arm   imx_v6_v7_defconfig
powerpc asp8347_defconfig
microblaze  defconfig
powerpc  mpc866_ads_defconfig
mips loongson2k_defconfig
shecovec24-romimage_defconfig
arm  ep93xx_defconfig
powerpc wii_defconfig
sh   se7343_defconfig
m68km5407c3_defconfig
armrealview_defconfig
armdove_defconfig
arm  colibri_pxa270_defconfig
openrisc simple_smp_defconfig
arm hackkit_defconfig
sh  kfr2r09_defconfig
arm  badge4_defconfig
nios2   defconfig
powerpc   motionpro_defconfig
sh espt_defconfig
arm  collie_defconfig
arm   u8500_defconfig
arm vf610m4_defconfig
h8300   defconfig
arm  alldefconfig
nds32   defconfig
armspear6xx_defconfig
powerpc   currituck_defconfig
arm  integrator_defconfig
arm   omap2plus_defconfig
armqcom_defconfig
arm   h3600_defconfig
arm lpc32xx_defconfig
arm   spear13xx_defconfig
x86_64allnoconfig
ia64 allmodconfig
ia64defconfig
ia64 allyesconfig
m68k allmodconfig
m68kdefconfig
m68k allyesconfig
arc  allyesconfig
nds32 allnoconfig
nios2allyesconfig
cskydefconfig
alpha   defconfig
alphaallyesconfig
xtensa   allyesconfig
h8300allyesconfig
arc defconfig
sh   allmodconfig
parisc  defconfig
s390 allyesconfig
s390 allmodconfig
parisc   allyesconfig
s390defconfig
i386 allyesconfig
sparcallyesconfig
sparc

GREETHINGS!!!

2021-07-22 Thread Jan Franssen
ear Sir,

My name is Mr. Jan Franssen, Chief Financial Officer,
AME Capital Asset Management Limited here in London, United Kingdom; I
have URGENT and discreet business proposal for you that shall benefit
us immensely should you choose to participate or partner with me.

Before I reveal any sensitive information it is important I state
categorically that, all privilege information concerning my proposal
and this business transaction is treated with utmost confidentiality
due to the source of funds.

These funds which sums up to (GBP?15.5) Million British Pounds are
currently in our client segregated account in relation to one of our
private clients late (Deceased) who passed away 5 years ago. Hence, the
reason why I have contacted you is because you share the same name
with the deceased which is very important in securing the above
mentioned funds.

These funds are held with our prime brokers which is an offshore bank
here in the UK. With your permission, I shall give step by step
explanation on why I need your assistance and also the source of
funds. Further information on how we shall proceed legally to obtain
These funds will be provided in due course once I ascertain your
genuine intentions and willingness to assist.

Should you be interested, then I would like to hear from you as
soon as possible via my Email:janfrans...@counsellor.com to enable me
provide you with more details on how we are to proceed. I anticipate
and look forward to a successful business relationship with you.

Yours faithfully
Mr.Jan Franssen
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[staging:staging-linus] BUILD SUCCESS cb7abd1db6e5f99a05f1a00b65be29029a6a152a

2021-07-22 Thread kernel test robot
tree/branch: https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git 
staging-linus
branch HEAD: cb7abd1db6e5f99a05f1a00b65be29029a6a152a  staging: rtl8723bs: 
select CONFIG_CRYPTO_LIB_ARC4

elapsed time: 1394m

configs tested: 161
configs skipped: 3

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

gcc tested configs:
arm defconfig
arm64allyesconfig
arm64   defconfig
arm  allyesconfig
arm  allmodconfig
i386 randconfig-c001-20210720
i386 randconfig-c001-20210722
um   x86_64_defconfig
riscvallyesconfig
mips allyesconfig
um i386_defconfig
mips allmodconfig
riscvallmodconfig
arc  allyesconfig
nios2allyesconfig
alphaallyesconfig
powerpc   ebony_defconfig
powerpc  bamboo_defconfig
arm  integrator_defconfig
armmulti_v7_defconfig
mips   jazz_defconfig
sh  sdk7786_defconfig
arm   stm32_defconfig
arm   viper_defconfig
mipsvocore2_defconfig
sh  rsk7201_defconfig
powerpc ps3_defconfig
m68k apollo_defconfig
sparcalldefconfig
mips   ci20_defconfig
sh  lboxre2_defconfig
arm   sama5_defconfig
arm mxs_defconfig
arm   aspeed_g5_defconfig
powerpc  ppc64e_defconfig
armxcep_defconfig
powerpc mpc834x_mds_defconfig
mips tb0287_defconfig
shtitan_defconfig
arcnsim_700_defconfig
riscv  rv32_defconfig
m68km5407c3_defconfig
armrealview_defconfig
armdove_defconfig
arm  colibri_pxa270_defconfig
openrisc simple_smp_defconfig
arm   u8500_defconfig
arm vf610m4_defconfig
h8300   defconfig
arm  alldefconfig
powerpc  mpc866_ads_defconfig
nds32   defconfig
m68k   m5475evb_defconfig
armspear6xx_defconfig
powerpc   currituck_defconfig
nds32alldefconfig
arm pxa_defconfig
mips   ip27_defconfig
sh   se7751_defconfig
mips   xway_defconfig
armmvebu_v7_defconfig
arm   omap2plus_defconfig
armqcom_defconfig
arm   h3600_defconfig
arm lpc32xx_defconfig
arm   spear13xx_defconfig
microblaze  defconfig
ia64 allmodconfig
ia64defconfig
ia64 allyesconfig
x86_64allnoconfig
m68k allmodconfig
m68kdefconfig
m68k allyesconfig
nios2   defconfig
nds32 allnoconfig
cskydefconfig
alpha   defconfig
xtensa   allyesconfig
h8300allyesconfig
arc defconfig
sh   allmodconfig
parisc  defconfig
s390 allyesconfig
s390 allmodconfig
parisc   allyesconfig
s390defconfig
i386 allyesconfig
sparcallyesconfig
sparc   defconfig
i386defconfig
powerpc  allyesconfig
powerpc  allmodconfig
powerpc   allnoconfig
x86_64   randconfig-a003-20210720
x86_64   randconfig-a006-20210720
x86_64   randconfig-a001-20210720
x86_64   randconfig-a005-20210720
x86_64   randconfig-a004-20210720
x86_64   randconfig-a002-20210720
x86_64

Re: PROJECT: From: Dr. Emmanuel Ibe Kachikwu (GMD) Nnpc Towers Garki, Abuja

2021-07-22 Thread Dr. Emmanuel Ibe Kachikwu (GMD)
Nnpc Towers, Central Business District, Herbert Macaulay way, P.m.b. 190, 
Garki, Abuja.
 
From: Dr. Emmanuel Ibe Kachikwu (GMD)
Contract Ref No: NNPC/PED/1462/KADREF/92)  

Attn: Ceo,
 
I know that this proposal may come to you as a surprise especially having to 
come from someone you have not met before. I got your information from your 
country's chamber of commerce here in Nigeria.
 
My name is Dr. Emmanuel Ibe Kachikwu, The Minister of State for Petroleum 
Resources, National Petroleum Corporation (NNPC). Be informed that my partner 
Dr. Maikanti Baru and I awarded a contract to a foreign firm (Sheng Yang 
Contraction Company) with contract Ref No: NNPC/PED/1462/KADREF/92) for the 
maintenance of the Nigeria petroleum-chemical complex located at Kaduna, 
Nigeria.
 
I know that this proposal may come to you as a surprise especially having to 
come from someone you have not met before, but I would like you to co-operate 
with me so that this U$D98, 000,000.00 will be released and transferred into 
your account, it is mine profound intention to contact you for this very 
important and highly confidential transaction for the transfer of (U$D98, 
000,000.00 Ninety-Eight Million United States Dollars Only into your bank 
account.
 
The contract has been successfully executed by the contractors and their 
contract sum has been paid to them, leaving us an overestimated balance of 
(U$D98, 000,000.00 Ninety-Eight Million United States Dollars Only) still 
pending at the bank. Right now, we are left with this overestimated balance of 
(U$D98, 000,000.00) which is still floating at the escrow account in the 
Central Bank of Nigeria (CBN) waiting for final payment to any reliable foreign 
bank account, you may provide.
 
We, as government officials, are not permitted to own or operate foreign bank 
accounts. therefore, we need reliable person who will provide us with a foreign 
account where to transfer and deposit this US$98,000,000.00, that is the reason 
we are soliciting for your sincere assistance to provide us with an account 
where to transfer this money .all modalities for the easy transfer of this 
money is now in place, the period of this transaction is only two weeks from 
the day we receive your bank account details.
 
Note that 50% of our share will be invested in your country, as we propose to 
give you 30% of the U$D98, 000,000.00, my partners and I will get 60% of the 
money.
 
The balance of 10% will be allocated to cover all expenses incurred by both 
partners, be informed that this proposal is urgent and confidential, please 
send to me your bank account details and full address of company name and 
address, your private phone and fax number for easy communication which will be 
used in securing all the necessary documents for easy transfer of the fund.
 
 
Awaiting your urgent response.
 
Best regards.

Dr. Emmanuel Ibe Kachikwu.
The Minister of State for Petroleum Resources, Nigerian National Petroleum 
Corporation (NNPC)
 
This email and any attachments to it may be confidential and are intended 
solely for the use of the individual to whom it is addressed. Any views or 
opinions expressed are solely those of the author and do not necessarily 
represent those of Masterpage®. If you are not the intended recipient of this 
email, you must neither take any action based upon its contents, nor copy or 
show it to anyone. Please contact the sender if you believe you have received 
this email in error.

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


[PATCH v3 2/3] drm/loongson: Add GPIO and I2C driver for loongson drm.

2021-07-22 Thread lichenyang
Implement use GPIO and I2C driver to detect connector
and fetch EDID via DDC.

v2:
- Optimize the error handling process.
- Delete loongson_i2c_bus_match and loongson_i2c_add function.
- Optimize part of the code flow.

Signed-off-by: lichenyang 
---
 drivers/gpu/drm/loongson/Makefile |   3 +-
 drivers/gpu/drm/loongson/loongson_connector.c |  59 -
 drivers/gpu/drm/loongson/loongson_drv.c   |  15 +-
 drivers/gpu/drm/loongson/loongson_drv.h   |  10 +
 drivers/gpu/drm/loongson/loongson_i2c.c   | 246 ++
 drivers/gpu/drm/loongson/loongson_i2c.h   |  36 +++
 6 files changed, 363 insertions(+), 6 deletions(-)
 create mode 100644 drivers/gpu/drm/loongson/loongson_i2c.c
 create mode 100644 drivers/gpu/drm/loongson/loongson_i2c.h

diff --git a/drivers/gpu/drm/loongson/Makefile 
b/drivers/gpu/drm/loongson/Makefile
index 22d063953b78..773b806e99a2 100644
--- a/drivers/gpu/drm/loongson/Makefile
+++ b/drivers/gpu/drm/loongson/Makefile
@@ -10,5 +10,6 @@ loongson-y := loongson_drv.o \
loongson_plane.o \
loongson_device.o \
loongson_connector.o \
-   loongson_encoder.o
+   loongson_encoder.o \
+   loongson_i2c.o
 obj-$(CONFIG_DRM_LOONGSON) += loongson.o
diff --git a/drivers/gpu/drm/loongson/loongson_connector.c 
b/drivers/gpu/drm/loongson/loongson_connector.c
index a571f9ef4266..346b059f1488 100644
--- a/drivers/gpu/drm/loongson/loongson_connector.c
+++ b/drivers/gpu/drm/loongson/loongson_connector.c
@@ -4,12 +4,56 @@

 static int loongson_get_modes(struct drm_connector *connector)
 {
-   int count;
+   struct loongson_connector *lconnector =
+   to_loongson_connector(connector);
+   struct i2c_adapter *adapter = lconnector->i2c->adapter;
+   struct edid *edid = NULL;
+   u32 ret;

-   count = drm_add_modes_noedid(connector, 1920, 1080);
-   drm_set_preferred_mode(connector, 1024, 768);
+   edid = drm_get_edid(connector, adapter);
+   if (edid) {
+   drm_connector_update_edid_property(connector, edid);
+   ret = drm_add_edid_modes(connector, edid);
+   } else {
+   DRM_ERROR("Failed to read EDID\n");
+   ret = drm_add_modes_noedid(connector, 1024, 768);
+   }

-   return count;
+   return ret;
+}
+
+static bool is_connected(struct loongson_connector *lconnector)
+{
+   struct i2c_adapter *adapter = lconnector->i2c->adapter;
+   unsigned char start = 0x0;
+   struct i2c_msg msgs = {
+   .addr = DDC_ADDR,
+   .flags = 0,
+   .len = 1,
+   .buf = &start,
+   };
+
+   if (!lconnector->i2c)
+   return false;
+
+   if (i2c_transfer(adapter, &msgs, 1) != 1) {
+   DRM_DEBUG_KMS("display-%d not connect\n", lconnector->id);
+   return false;
+   }
+
+   return true;
+}
+
+static enum drm_connector_status
+loongson_detect(struct drm_connector *connector, bool force)
+{
+   struct loongson_connector *lconnector =
+   to_loongson_connector(connector);
+
+   if (is_connected(lconnector))
+   return connector_status_connected;
+
+   return connector_status_disconnected;
 }

 static const struct drm_connector_helper_funcs loongson_connector_helper = {
@@ -17,6 +61,7 @@ static const struct drm_connector_helper_funcs 
loongson_connector_helper = {
 };

 static const struct drm_connector_funcs loongson_connector_funcs = {
+   .detect = loongson_detect,
.fill_modes = drm_helper_probe_single_connector_modes,
.destroy = drm_connector_cleanup,
.reset = drm_atomic_helper_connector_reset,
@@ -35,6 +80,12 @@ int loongson_connector_init(struct loongson_device *ldev, 
int index)

lconnector->ldev = ldev;
lconnector->id = index;
+   lconnector->i2c_id = index;
+
+   lconnector->i2c = &ldev->i2c_bus[lconnector->i2c_id];
+   if (!lconnector->i2c)
+   DRM_INFO("connector-%d match i2c-%d err\n", index,
+lconnector->i2c_id);

ldev->mode_info[index].connector = lconnector;
connector = &lconnector->base;
diff --git a/drivers/gpu/drm/loongson/loongson_drv.c 
b/drivers/gpu/drm/loongson/loongson_drv.c
index c84494f7aabb..214217b9b257 100644
--- a/drivers/gpu/drm/loongson/loongson_drv.c
+++ b/drivers/gpu/drm/loongson/loongson_drv.c
@@ -11,9 +11,10 @@

 /* Interface history:
  * 0.1 - original.
+ * 0.2 - add i2c and connector detect.
  */
 #define DRIVER_MAJOR 0
-#define DRIVER_MINOR 1
+#define DRIVER_MINOR 2

 static const struct drm_mode_config_funcs loongson_mode_funcs = {
.fb_create = drm_gem_fb_create,
@@ -76,6 +77,18 @@ static int loongson_device_init(struct drm_device *dev)
if (!ldev->io)
return -ENOMEM;

+   ret = loongson_dc_gpio_init(ldev);
+   if (ret) {
+   DRM_ERROR("Failed to initialize dc gpios\n");
+   ret

[PATCH v3 1/3] drm/loongson: Add DRM Driver for Loongson 7A1000 bridge chip

2021-07-22 Thread lichenyang
From: Chenyang Li 

This patch adds an initial DRM driver for the Loongson LS7A1000
bridge chip(LS7A). The LS7A bridge chip contains two display
controllers, support dual display output. The maximum support for
each channel display is to 1920x1080@60Hz.
At present, DC device detection and DRM driver registration are
completed, the crtc/plane/encoder/connector objects has been
implemented.
On Loongson 3A4000 CPU and 7A1000 system, we have achieved the use
of dual screen, and support dual screen clone mode and expansion
mode.

v9:
- Optimize the error handling process.
- Remove the useless flags parameter.
- Fix some incorrect use of variables and constructs.

v8:
- Update the atomic_update function interface.

v7:
- The pixel clock is limited to less than 173000.

v6:
- Remove spin_lock in mmio reg read and write.
- TO_UNCAC is replac with ioremap.
- Fix error arguments in crtc_atomic_enable/disable/mode_valid.

v5:
- Change the name of the chip to LS7A.
- Change magic value in crtc to macros.
- Correct mistakes words.
- Change the register operation function prefix to ls7a.

v4:
- Move the mode_valid function to the crtc.

v3:
- Move the mode_valid function to the connector and optimize it.
- Fix num_crtc calculation method.

v2:
- Complete the case of 32-bit color in CRTC.

Signed-off-by: Chenyang Li 
---
 drivers/gpu/drm/Kconfig   |   2 +
 drivers/gpu/drm/Makefile  |   1 +
 drivers/gpu/drm/loongson/Kconfig  |  14 +
 drivers/gpu/drm/loongson/Makefile |  14 +
 drivers/gpu/drm/loongson/loongson_connector.c |  46 +++
 drivers/gpu/drm/loongson/loongson_crtc.c  | 249 
 drivers/gpu/drm/loongson/loongson_device.c|  35 +++
 drivers/gpu/drm/loongson/loongson_drv.c   | 278 ++
 drivers/gpu/drm/loongson/loongson_drv.h   | 140 +
 drivers/gpu/drm/loongson/loongson_encoder.c   |  37 +++
 drivers/gpu/drm/loongson/loongson_plane.c |  97 ++
 11 files changed, 913 insertions(+)
 create mode 100644 drivers/gpu/drm/loongson/Kconfig
 create mode 100644 drivers/gpu/drm/loongson/Makefile
 create mode 100644 drivers/gpu/drm/loongson/loongson_connector.c
 create mode 100644 drivers/gpu/drm/loongson/loongson_crtc.c
 create mode 100644 drivers/gpu/drm/loongson/loongson_device.c
 create mode 100644 drivers/gpu/drm/loongson/loongson_drv.c
 create mode 100644 drivers/gpu/drm/loongson/loongson_drv.h
 create mode 100644 drivers/gpu/drm/loongson/loongson_encoder.c
 create mode 100644 drivers/gpu/drm/loongson/loongson_plane.c

diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig
index 7ff89690a976..08562d9be6e3 100644
--- a/drivers/gpu/drm/Kconfig
+++ b/drivers/gpu/drm/Kconfig
@@ -365,6 +365,8 @@ source "drivers/gpu/drm/xen/Kconfig"
 
 source "drivers/gpu/drm/vboxvideo/Kconfig"
 
+source "drivers/gpu/drm/loongson/Kconfig"
+
 source "drivers/gpu/drm/lima/Kconfig"
 
 source "drivers/gpu/drm/panfrost/Kconfig"
diff --git a/drivers/gpu/drm/Makefile b/drivers/gpu/drm/Makefile
index a118692a6df7..29c05b8cf2ad 100644
--- a/drivers/gpu/drm/Makefile
+++ b/drivers/gpu/drm/Makefile
@@ -119,6 +119,7 @@ obj-$(CONFIG_DRM_PL111) += pl111/
 obj-$(CONFIG_DRM_TVE200) += tve200/
 obj-$(CONFIG_DRM_XEN) += xen/
 obj-$(CONFIG_DRM_VBOXVIDEO) += vboxvideo/
+obj-$(CONFIG_DRM_LOONGSON) += loongson/
 obj-$(CONFIG_DRM_LIMA)  += lima/
 obj-$(CONFIG_DRM_PANFROST) += panfrost/
 obj-$(CONFIG_DRM_ASPEED_GFX) += aspeed/
diff --git a/drivers/gpu/drm/loongson/Kconfig b/drivers/gpu/drm/loongson/Kconfig
new file mode 100644
index ..3cf42a4cca08
--- /dev/null
+++ b/drivers/gpu/drm/loongson/Kconfig
@@ -0,0 +1,14 @@
+# SPDX-License-Identifier: GPL-2.0-only
+
+config DRM_LOONGSON
+   tristate "DRM support for LS7A bridge chipset"
+   depends on DRM && PCI
+   depends on CPU_LOONGSON64
+   select DRM_KMS_HELPER
+   select DRM_VRAM_HELPER
+   select DRM_TTM
+   select DRM_TTM_HELPER
+   default n
+   help
+ Support the display controllers found on the Loongson LS7A
+ bridge.
diff --git a/drivers/gpu/drm/loongson/Makefile 
b/drivers/gpu/drm/loongson/Makefile
new file mode 100644
index ..22d063953b78
--- /dev/null
+++ b/drivers/gpu/drm/loongson/Makefile
@@ -0,0 +1,14 @@
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# Makefile for loongson drm drivers.
+# This driver provides support for the
+# Direct Rendering Infrastructure (DRI)
+
+ccflags-y := -Iinclude/drm
+loongson-y := loongson_drv.o \
+   loongson_crtc.o \
+   loongson_plane.o \
+   loongson_device.o \
+   loongson_connector.o \
+   loongson_encoder.o
+obj-$(CONFIG_DRM_LOONGSON) += loongson.o
diff --git a/drivers/gpu/drm/loongson/loongson_connector.c 
b/drivers/gpu/drm/loongson/loongson_connector.c
new file mode 100644
index ..a571f9ef4266
--- /dev/null
+++ b/drivers/gpu/drm/loongson/loongson_connector.c
@@ -0,0 +1,46 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "loongson_

[PATCH v3 3/3] drm/loongson: Add interrupt driver for LS7A

2021-07-22 Thread lichenyang
Add LS7A DC vsync interrupt enable and close function, and
register irq_handler function interface.
Add vbrank event processing flow.

v3:
- Improve code readability.
- Use the to_pci_dev function to get pci_dev.

v2:
- Added error handling in the loongson_drm_load function.

Signed-off-by: lichenyang 
---
 drivers/gpu/drm/loongson/Makefile|  3 +-
 drivers/gpu/drm/loongson/loongson_crtc.c | 40 +-
 drivers/gpu/drm/loongson/loongson_drv.c  | 10 +++
 drivers/gpu/drm/loongson/loongson_drv.h  | 17 -
 drivers/gpu/drm/loongson/loongson_irq.c  | 94 
 5 files changed, 160 insertions(+), 4 deletions(-)
 create mode 100644 drivers/gpu/drm/loongson/loongson_irq.c

diff --git a/drivers/gpu/drm/loongson/Makefile 
b/drivers/gpu/drm/loongson/Makefile
index 773b806e99a2..cc50b65c7e03 100644
--- a/drivers/gpu/drm/loongson/Makefile
+++ b/drivers/gpu/drm/loongson/Makefile
@@ -11,5 +11,6 @@ loongson-y := loongson_drv.o \
loongson_device.o \
loongson_connector.o \
loongson_encoder.o \
-   loongson_i2c.o
+   loongson_i2c.o \
+   loongson_irq.o
 obj-$(CONFIG_DRM_LOONGSON) += loongson.o
diff --git a/drivers/gpu/drm/loongson/loongson_crtc.c 
b/drivers/gpu/drm/loongson/loongson_crtc.c
index 163e24d85b02..d8b06256f754 100644
--- a/drivers/gpu/drm/loongson/loongson_crtc.c
+++ b/drivers/gpu/drm/loongson/loongson_crtc.c
@@ -154,19 +154,25 @@ static void loongson_crtc_mode_set_nofb(struct drm_crtc 
*crtc)
 }
 
 static void loongson_crtc_atomic_enable(struct drm_crtc *crtc,
-   struct drm_atomic_state *old_state)
+   struct drm_atomic_state *old_crtc_state)
 {
struct drm_device *dev = crtc->dev;
struct loongson_device *ldev = dev->dev_private;
struct loongson_crtc *lcrtc = to_loongson_crtc(crtc);
u32 reg_offset = lcrtc->reg_offset;
 
+   if (lcrtc->cfg_reg & CFG_ENABLE)
+   goto vblank_on;
+
lcrtc->cfg_reg |= CFG_ENABLE;
ls7a_mm_wreg(ldev, FB_CFG_REG + reg_offset, lcrtc->cfg_reg);
+
+vblank_on:
+   drm_crtc_vblank_on(crtc);
 }
 
 static void loongson_crtc_atomic_disable(struct drm_crtc *crtc,
-struct drm_atomic_state *old_state)
+struct drm_atomic_state 
*old_crtc_state)
 {
struct drm_device *dev = crtc->dev;
struct loongson_device *ldev = dev->dev_private;
@@ -175,6 +181,33 @@ static void loongson_crtc_atomic_disable(struct drm_crtc 
*crtc,
 
lcrtc->cfg_reg &= ~CFG_ENABLE;
ls7a_mm_wreg(ldev, FB_CFG_REG + reg_offset, lcrtc->cfg_reg);
+
+   spin_lock_irq(&crtc->dev->event_lock);
+   if (crtc->state->event) {
+   drm_crtc_send_vblank_event(crtc, crtc->state->event);
+   crtc->state->event = NULL;
+   }
+   spin_unlock_irq(&crtc->dev->event_lock);
+
+   drm_crtc_vblank_off(crtc);
+}
+
+static void loongson_crtc_atomic_flush(struct drm_crtc *crtc,
+  struct drm_atomic_state *state)
+{
+   struct drm_pending_vblank_event *event = crtc->state->event;
+
+   if (!event)
+   return;
+
+   crtc->state->event = NULL;
+
+   spin_lock_irq(&crtc->dev->event_lock);
+   if (drm_crtc_vblank_get(crtc) == 0)
+   drm_crtc_arm_vblank_event(crtc, event);
+   else
+   drm_crtc_send_vblank_event(crtc, event);
+   spin_unlock_irq(&crtc->dev->event_lock);
 }
 
 static enum drm_mode_status loongson_mode_valid(struct drm_crtc *crtc,
@@ -194,6 +227,7 @@ static enum drm_mode_status loongson_mode_valid(struct 
drm_crtc *crtc,
 
 static const struct drm_crtc_helper_funcs loongson_crtc_helper_funcs = {
.mode_valid = loongson_mode_valid,
+   .atomic_flush = loongson_crtc_atomic_flush,
.atomic_enable = loongson_crtc_atomic_enable,
.atomic_disable = loongson_crtc_atomic_disable,
.mode_set_nofb = loongson_crtc_mode_set_nofb,
@@ -206,6 +240,8 @@ static const struct drm_crtc_funcs loongson_crtc_funcs = {
.destroy = drm_crtc_cleanup,
.atomic_duplicate_state = drm_atomic_helper_crtc_duplicate_state,
.atomic_destroy_state = drm_atomic_helper_crtc_destroy_state,
+   .enable_vblank = loongson_crtc_enable_vblank,
+   .disable_vblank = loongson_crtc_disable_vblank,
 };
 
 int loongson_crtc_init(struct loongson_device *ldev, int index)
diff --git a/drivers/gpu/drm/loongson/loongson_drv.c 
b/drivers/gpu/drm/loongson/loongson_drv.c
index 214217b9b257..38ea41f3851b 100644
--- a/drivers/gpu/drm/loongson/loongson_drv.c
+++ b/drivers/gpu/drm/loongson/loongson_drv.c
@@ -172,6 +172,12 @@ static int loongson_drm_load(struct drm_device *dev)
goto err;
}
 
+   ret = loongson_irq_init(ldev);
+   if (ret) {
+   dev_err(dev->dev, "Fatal error during irq init: %d\n", ret);
+   goto err;
+   }
+
drm_

Re: [PATCH] Drivers: comedi: Lindented files.

2021-07-22 Thread Greg KH
On Fri, Jul 23, 2021 at 12:09:27AM +0300, vpuh1 wrote:
> Indented files in drivers/comedi directory using scripts/Lindent.
> 
> Signed-off-by: Artem Baxtiarov 

Hi,

This is the friendly patch-bot of Greg Kroah-Hartman.  You have sent him
a patch that has triggered this response.  He used to manually respond
to these common problems, but in order to save his sanity (he kept
writing the same thing over and over, yet to different people), I was
created.  Hopefully you will not take offence and will fix the problem
in your patch and resubmit it so that it can be accepted into the Linux
kernel tree.

You are receiving this message because of the following common error(s)
as indicated below:

- Your patch contains warnings and/or errors noticed by the
  scripts/checkpatch.pl tool.

- Your patch did many different things all at once, making it difficult
  to review.  All Linux kernel patches need to only do one thing at a
  time.  If you need to do multiple things (such as clean up all coding
  style issues in a file/driver), do it in a sequence of patches, each
  one doing only one thing.  This will make it easier to review the
  patches to ensure that they are correct, and to help alleviate any
  merge issues that larger patches can cause.

- You did not specify a description of why the patch is needed, or
  possibly, any description at all, in the email body.  Please read the
  section entitled "The canonical patch format" in the kernel file,
  Documentation/SubmittingPatches for what is needed in order to
  properly describe the change.

- You did not write a descriptive Subject: for the patch, allowing Greg,
  and everyone else, to know what this patch is all about.  Please read
  the section entitled "The canonical patch format" in the kernel file,
  Documentation/SubmittingPatches for what a proper Subject: line should
  look like.

- It looks like you did not use your "real" name for the patch on either
  the Signed-off-by: line, or the From: line (both of which have to
  match).  Please read the kernel file, Documentation/SubmittingPatches
  for how to do this correctly.

If you wish to discuss this problem further, or you have questions about
how to resolve this issue, please feel free to respond to this email and
Greg will reply once he has dug out from the pending patches received
from other developers.

thanks,

greg k-h's patch email bot
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel