Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 22 May 2021 17:07:00 -0500
From:      Mark Kane <mark@kane.mn>
To:        Hans Petter Selasky <hps@selasky.org>
Cc:        freebsd-usb@freebsd.org
Subject:   Re: eGalax USB touchscreen issues
Message-ID:  <ba14fc83b09327c042ed685fea71e2ee@kane.mn>
In-Reply-To: <74c359d7-512d-0fcd-381f-82161cc20078@selasky.org>
References:  <cd7bd8d9eb9bee6cdc7e4d416b7b8153@kane.mn> <e02aa9c7-0b50-0bd4-39de-25cb334c0d07@selasky.org> <e217bcce5b4b4fe957ce34bce19e94b9@kane.mn> <daa5b22c-29a6-4757-33b5-fe2f683350b6@selasky.org> <b92ac0ad72b777d2f707d6e6316273b5@kane.mn> <24ab05f3-86f3-5da7-0485-2839eba43975@selasky.org> <8a7a7402-95e3-3fe3-bde2-01b4a16a97fd@selasky.org> <74c359d7-512d-0fcd-381f-82161cc20078@selasky.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On 2021-05-22 03:34, Hans Petter Selasky wrote:
> This patch should work:
> 
> https://github.com/hselasky/webcamd/commit/816f17ac38ce32879f6eb5b610305468b1b24de9

Thanks for the diff. That applies cleanly to the 5.10.6.1 port but 
errors during build:

--- obj-media_tree-drivers-input-touchscreen-egalax_ts.o ---
In file included from 
media_tree/drivers/input/touchscreen/egalax_ts.c:27:
In file included from media_tree/include/linux/of_gpio.h:14:
In file included from media_tree/include/linux/gpio/driver.h:8:
media_tree/include/linux/irqchip/chained_irq.h:16:45: warning: 
declaration of 'struct irq_chip' will not be visible outside of this 
function [-Wvisibility]
static inline void chained_irq_enter(struct irq_chip *chip,
                                             ^
media_tree/include/linux/irqchip/chained_irq.h:17:17: warning: 
declaration of 'struct irq_desc' will not be visible outside of this 
function [-Wvisibility]
                                      struct irq_desc *desc)
                                             ^
media_tree/include/linux/irqchip/chained_irq.h:20:10: error: incomplete 
definition of type 'struct irq_chip'
         if (chip->irq_eoi)
             ~~~~^
media_tree/include/linux/irqchip/chained_irq.h:16:45: note: forward 
declaration of 'struct irq_chip'
static inline void chained_irq_enter(struct irq_chip *chip,
                                             ^
media_tree/include/linux/irqchip/chained_irq.h:23:10: error: incomplete 
definition of type 'struct irq_chip'
         if (chip->irq_mask_ack) {
             ~~~~^
media_tree/include/linux/irqchip/chained_irq.h:16:45: note: forward 
declaration of 'struct irq_chip'
static inline void chained_irq_enter(struct irq_chip *chip,
                                             ^
media_tree/include/linux/irqchip/chained_irq.h:24:7: error: incomplete 
definition of type 'struct irq_chip'
                 chip->irq_mask_ack(&desc->irq_data);
                 ~~~~^
media_tree/include/linux/irqchip/chained_irq.h:16:45: note: forward 
declaration of 'struct irq_chip'
static inline void chained_irq_enter(struct irq_chip *chip,
                                             ^
media_tree/include/linux/irqchip/chained_irq.h:24:27: error: incomplete 
definition of type 'struct irq_desc'
                 chip->irq_mask_ack(&desc->irq_data);
                                     ~~~~^
media_tree/include/linux/irqchip/chained_irq.h:17:17: note: forward 
declaration of 'struct irq_desc'
                                      struct irq_desc *desc)
                                             ^
media_tree/include/linux/irqchip/chained_irq.h:26:7: error: incomplete 
definition of type 'struct irq_chip'
                 chip->irq_mask(&desc->irq_data);
                 ~~~~^
media_tree/include/linux/irqchip/chained_irq.h:16:45: note: forward 
declaration of 'struct irq_chip'
static inline void chained_irq_enter(struct irq_chip *chip,
                                             ^
media_tree/include/linux/irqchip/chained_irq.h:26:23: error: incomplete 
definition of type 'struct irq_desc'
                 chip->irq_mask(&desc->irq_data);
                                 ~~~~^
media_tree/include/linux/irqchip/chained_irq.h:17:17: note: forward 
declaration of 'struct irq_desc'
                                      struct irq_desc *desc)
                                             ^
media_tree/include/linux/irqchip/chained_irq.h:27:11: error: incomplete 
definition of type 'struct irq_chip'
                 if (chip->irq_ack)
                     ~~~~^
media_tree/include/linux/irqchip/chained_irq.h:16:45: note: forward 
declaration of 'struct irq_chip'
static inline void chained_irq_enter(struct irq_chip *chip,
                                             ^
media_tree/include/linux/irqchip/chained_irq.h:28:8: error: incomplete 
definition of type 'struct irq_chip'
                         chip->irq_ack(&desc->irq_data);
                         ~~~~^
media_tree/include/linux/irqchip/chained_irq.h:16:45: note: forward 
declaration of 'struct irq_chip'
static inline void chained_irq_enter(struct irq_chip *chip,
                                             ^
media_tree/include/linux/irqchip/chained_irq.h:28:23: error: incomplete 
definition of type 'struct irq_desc'
                         chip->irq_ack(&desc->irq_data);
                                        ~~~~^
media_tree/include/linux/irqchip/chained_irq.h:17:17: note: forward 
declaration of 'struct irq_desc'
                                      struct irq_desc *desc)
                                             ^
media_tree/include/linux/irqchip/chained_irq.h:32:44: warning: 
declaration of 'struct irq_chip' will not be visible outside of this 
function [-Wvisibility]
static inline void chained_irq_exit(struct irq_chip *chip,
                                            ^
media_tree/include/linux/irqchip/chained_irq.h:33:16: warning: 
declaration of 'struct irq_desc' will not be visible outside of this 
function [-Wvisibility]
                                     struct irq_desc *desc)
                                            ^
media_tree/include/linux/irqchip/chained_irq.h:35:10: error: incomplete 
definition of type 'struct irq_chip'
         if (chip->irq_eoi)
             ~~~~^
media_tree/include/linux/irqchip/chained_irq.h:32:44: note: forward 
declaration of 'struct irq_chip'
static inline void chained_irq_exit(struct irq_chip *chip,
                                            ^
media_tree/include/linux/irqchip/chained_irq.h:36:7: error: incomplete 
definition of type 'struct irq_chip'
                 chip->irq_eoi(&desc->irq_data);
                 ~~~~^
media_tree/include/linux/irqchip/chained_irq.h:32:44: note: forward 
declaration of 'struct irq_chip'
static inline void chained_irq_exit(struct irq_chip *chip,
                                            ^
media_tree/include/linux/irqchip/chained_irq.h:36:22: error: incomplete 
definition of type 'struct irq_desc'
                 chip->irq_eoi(&desc->irq_data);
                                ~~~~^
media_tree/include/linux/irqchip/chained_irq.h:33:16: note: forward 
declaration of 'struct irq_desc'
                                     struct irq_desc *desc)
                                            ^
media_tree/include/linux/irqchip/chained_irq.h:38:7: error: incomplete 
definition of type 'struct irq_chip'
                 chip->irq_unmask(&desc->irq_data);
                 ~~~~^
media_tree/include/linux/irqchip/chained_irq.h:32:44: note: forward 
declaration of 'struct irq_chip'
static inline void chained_irq_exit(struct irq_chip *chip,
                                            ^
media_tree/include/linux/irqchip/chained_irq.h:38:25: error: incomplete 
definition of type 'struct irq_desc'
                 chip->irq_unmask(&desc->irq_data);
                                   ~~~~^
media_tree/include/linux/irqchip/chained_irq.h:33:16: note: forward 
declaration of 'struct irq_desc'
                                     struct irq_desc *desc)
                                            ^
In file included from 
media_tree/drivers/input/touchscreen/egalax_ts.c:27:
In file included from media_tree/include/linux/of_gpio.h:14:
media_tree/include/linux/gpio/driver.h:137:2: error: unknown type name 
'irq_flow_handler_t'
         irq_flow_handler_t handler;
         ^
media_tree/include/linux/gpio/driver.h:167:2: error: unknown type name 
'irq_flow_handler_t'
         irq_flow_handler_t parent_handler;
         ^
media_tree/include/linux/gpio/driver.h:248:29: warning: declaration of 
'struct irq_data' will not be visible outside of this function 
[-Wvisibility]
         void            (*irq_enable)(struct irq_data *data);
                                              ^
media_tree/include/linux/gpio/driver.h:255:30: warning: declaration of 
'struct irq_data' will not be visible outside of this function 
[-Wvisibility]
         void            (*irq_disable)(struct irq_data *data);
                                               ^
media_tree/include/linux/gpio/driver.h:261:29: warning: declaration of 
'struct irq_data' will not be visible outside of this function 
[-Wvisibility]
         void            (*irq_unmask)(struct irq_data *data);
                                              ^
media_tree/include/linux/gpio/driver.h:268:27: warning: declaration of 
'struct irq_data' will not be visible outside of this function 
[-Wvisibility]
         void            (*irq_mask)(struct irq_data *data);
                                            ^
media_tree/include/linux/gpio/driver.h:616:8: error: unknown type name 
'irq_hw_number_t'
                      irq_hw_number_t hwirq);
                      ^
media_tree/include/linux/gpio/driver.h:620:13: warning: declaration of 
'struct irq_data' will not be visible outside of this function 
[-Wvisibility]
                                  struct irq_data *data, bool reserve);
                                         ^
media_tree/include/linux/gpio/driver.h:622:16: warning: declaration of 
'struct irq_data' will not be visible outside of this function 
[-Wvisibility]
                                     struct irq_data *data);
                                            ^
media_tree/include/linux/gpio/driver.h:631:9: error: unknown type name 
'irq_flow_handler_t'
                              irq_flow_handler_t handler,
                              ^
media_tree/include/linux/gpio/driver.h:683:12: error: unknown type name 
'irq_flow_handler_t'
                                        irq_flow_handler_t handler,
                                        ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
10 warnings and 20 errors generated.
*** [obj-media_tree-drivers-input-touchscreen-egalax_ts.o] Error code 1

make[2]: stopped in /usr/ports/multimedia/webcamd/work/webcamd-5.10.6.1
1 error

make[2]: stopped in /usr/ports/multimedia/webcamd/work/webcamd-5.10.6.1
===> Compilation failed unexpectedly.
Try to set MAKE_JOBS_UNSAFE=yes and rebuild before reporting the failure 
to
the maintainer.
*** Error code 1

Stop.
make[1]: stopped in /usr/ports/multimedia/webcamd
*** Error code 1

Stop.
make: stopped in /usr/ports/multimedia/webcamd
#

---------------------------------------------------

Similar if adapted to the new 5.13.2.2 port:

--- obj-media_tree-drivers-input-touchscreen-egalax_ts.o ---
In file included from 
media_tree/drivers/input/touchscreen/egalax_ts.c:27:
In file included from media_tree/include/linux/of_gpio.h:14:
In file included from media_tree/include/linux/gpio/driver.h:8:
media_tree/include/linux/irqchip/chained_irq.h:16:45: warning: 
declaration of 'struct irq_chip' will not be visible outside of this 
function [-Wvisibility]
static inline void chained_irq_enter(struct irq_chip *chip,
                                             ^
media_tree/include/linux/irqchip/chained_irq.h:17:17: warning: 
declaration of 'struct irq_desc' will not be visible outside of this 
function [-Wvisibility]
                                      struct irq_desc *desc)
                                             ^
media_tree/include/linux/irqchip/chained_irq.h:20:10: error: incomplete 
definition of type 'struct irq_chip'
         if (chip->irq_eoi)
             ~~~~^
media_tree/include/linux/irqchip/chained_irq.h:16:45: note: forward 
declaration of 'struct irq_chip'
static inline void chained_irq_enter(struct irq_chip *chip,
                                             ^
media_tree/include/linux/irqchip/chained_irq.h:23:10: error: incomplete 
definition of type 'struct irq_chip'
         if (chip->irq_mask_ack) {
             ~~~~^
media_tree/include/linux/irqchip/chained_irq.h:16:45: note: forward 
declaration of 'struct irq_chip'
static inline void chained_irq_enter(struct irq_chip *chip,
--- obj-media_tree-drivers-input-touchscreen-sur40.o ---
--- obj-media_tree-drivers-input-touchscreen-egalax_ts.o ---
                                             ^
media_tree/include/linux/irqchip/chained_irq.h:24:7: error: incomplete 
definition of type 'struct irq_chip'
                 chip->irq_mask_ack(&desc->irq_data);
                 ~~~~^
media_tree/include/linux/irqchip/chained_irq.h:16:45: note: forward 
declaration of 'struct irq_chip'
static inline void chained_irq_enter(struct irq_chip *chip,
                                             ^
media_tree/include/linux/irqchip/chained_irq.h:24:27: error: incomplete 
definition of type 'struct irq_desc'
                 chip->irq_mask_ack(&desc->irq_data);
                                     ~~~~^
media_tree/include/linux/irqchip/chained_irq.h:17:17: note: forward 
declaration of 'struct irq_desc'
                                      struct irq_desc *desc)
                                             ^
media_tree/include/linux/irqchip/chained_irq.h:26:7: error: incomplete 
definition of type 'struct irq_chip'
                 chip->irq_mask(&desc->irq_data);
                 ~~~~^
media_tree/include/linux/irqchip/chained_irq.h:16:45: note: forward 
declaration of 'struct irq_chip'
static inline void chained_irq_enter(struct irq_chip *chip,
                                             ^
media_tree/include/linux/irqchip/chained_irq.h:26:23: error: incomplete 
definition of type 'struct irq_desc'
                 chip->irq_mask(&desc->irq_data);
                                 ~~~~^
media_tree/include/linux/irqchip/chained_irq.h:17:17: note: forward 
declaration of 'struct irq_desc'
                                      struct irq_desc *desc)
                                             ^
media_tree/include/linux/irqchip/chained_irq.h:27:11: error: incomplete 
definition of type 'struct irq_chip'
                 if (chip->irq_ack)
                     ~~~~^
media_tree/include/linux/irqchip/chained_irq.h:16:45: note: forward 
declaration of 'struct irq_chip'
static inline void chained_irq_enter(struct irq_chip *chip,
                                             ^
--- obj-media_tree-drivers-input-touchscreen-sur40.o ---
cc -c -DCURR_FILE_NAME=\"sur40\" -O2 -pipe  -fstack-protector-strong 
-fno-strict-aliasing  -D_GNU_SOURCE -DLINUX -Wall -Wno-pointer-sign 
-Wno-unused-variable 
-I/usr/ports/multimedia/webcamd/work/webcamd-5.13.2.2 
-I/usr/ports/multimedia/webcamd/work/webcamd-5.13.2.2/dummy 
-I/usr/ports/multimedia/webcamd/work/webcamd-5.13.2.2/headers 
-Imedia_tree/drivers/media/common 
-Imedia_tree/drivers/media/common/tuners 
-Imedia_tree/drivers/media/dvb/dvb-core 
-Imedia_tree/drivers/media/dvb/dvb-usb 
-Imedia_tree/drivers/media/dvb/frontends 
-Imedia_tree/drivers/media/dvb/ttpci 
-Imedia_tree/drivers/media/video/gspca 
-Imedia_tree/drivers/media/video/hdpvr 
-Imedia_tree/drivers/media/dvb-core -Imedia_tree/drivers/media/dvb-usb 
-Imedia_tree/drivers/media/dvb-frontends 
-Imedia_tree/drivers/media/tuners -Imedia_tree/drivers/media/pci/ttpci 
-Imedia_tree/drivers/media/common/siano 
-Imedia_tree/drivers/media/common/b2c2 
-Imedia_tree/drivers/media/usb/gspca 
-Imedia_tree/drivers/media/usb/dvb-usb 
-Imedia_tree/drivers/media/usb/dvb-usb-v2 --- 
obj-media_tree-drivers-input-touchscreen-egalax_ts.o ---
media_tree/include/linux/irqchip/chained_irq.h:28:8: error: incomplete 
definition of type 'struct irq_chip'
                         chip->irq_ack(&desc->irq_data);
                         ~~~~^
media_tree/include/linux/irqchip/chained_irq.h:16:45: note: forward 
declaration of 'struct irq_chip'
static inline void chained_irq_enter(struct irq_chip *chip,
                                             ^
media_tree/include/linux/irqchip/chained_irq.h:28:23: error: incomplete 
definition of type 'struct irq_desc'
                         chip->irq_ack(&desc->irq_data);
                                        ~~~~^
media_tree/include/linux/irqchip/chained_irq.h:17:17: note: forward 
declaration of 'struct irq_desc'
                                      struct irq_desc *desc)
                                             ^
media_tree/include/linux/irqchip/chained_irq.h:32:44: warning: 
declaration of 'struct irq_chip' will not be visible outside of this 
function [-Wvisibility]
--- obj-media_tree-drivers-input-touchscreen-sur40.o ---
-Imedia_tree/include -Imedia_tree/include/uapi 
-Imedia_tree/include/media -I/usr/local -I/usr/local/include -include 
webcamd_global.h -DCONFIG_DVB_USB_DEBUG -DHAVE_DEBUG -g   -MD  
-MF.depend.obj-media_tree-drivers-input-touchscreen-sur40.o 
-MTobj-media_tree-drivers-input-touchscreen-sur40.o -std=gnu99 
-Wno-format-zero-length -nobuiltininc -idirafter 
/usr/lib/clang/11.0.1/include -fstack-protector-strong    
-Qunused-arguments    -o 
obj-media_tree-drivers-input-touchscreen-sur40.o 
media_tree/drivers/input/touchscreen/sur40.c
--- obj-media_tree-drivers-input-touchscreen-egalax_ts.o ---
static inline void chained_irq_exit(struct irq_chip *chip,
                                            ^
media_tree/include/linux/irqchip/chained_irq.h:33:16: warning: 
declaration of 'struct irq_desc' will not be visible outside of this 
function [-Wvisibility]
                                     struct irq_desc *desc)
                                            ^
media_tree/include/linux/irqchip/chained_irq.h:35:10: error: incomplete 
definition of type 'struct irq_chip'
         if (chip->irq_eoi)
             ~~~~^
media_tree/include/linux/irqchip/chained_irq.h:32:44: note: forward 
declaration of 'struct irq_chip'
static inline void chained_irq_exit(struct irq_chip *chip,
                                            ^
media_tree/include/linux/irqchip/chained_irq.h:36:7: error: incomplete 
definition of type 'struct irq_chip'
                 chip->irq_eoi(&desc->irq_data);
                 ~~~~^
media_tree/include/linux/irqchip/chained_irq.h:32:44: note: forward 
declaration of 'struct irq_chip'
static inline void chained_irq_exit(struct irq_chip *chip,
                                            ^
media_tree/include/linux/irqchip/chained_irq.h:36:22: error: incomplete 
definition of type 'struct irq_desc'
                 chip->irq_eoi(&desc->irq_data);
                                ~~~~^
media_tree/include/linux/irqchip/chained_irq.h:33:16: note: forward 
declaration of 'struct irq_desc'
                                     struct irq_desc *desc)
                                            ^
media_tree/include/linux/irqchip/chained_irq.h:38:7: error: incomplete 
definition of type 'struct irq_chip'
                 chip->irq_unmask(&desc->irq_data);
                 ~~~~^
media_tree/include/linux/irqchip/chained_irq.h:32:44: note: forward 
declaration of 'struct irq_chip'
static inline void chained_irq_exit(struct irq_chip *chip,
                                            ^
media_tree/include/linux/irqchip/chained_irq.h:38:25: error: incomplete 
definition of type 'struct irq_desc'
                 chip->irq_unmask(&desc->irq_data);
                                   ~~~~^
media_tree/include/linux/irqchip/chained_irq.h:33:16: note: forward 
declaration of 'struct irq_desc'
                                     struct irq_desc *desc)
                                            ^
In file included from 
media_tree/drivers/input/touchscreen/egalax_ts.c:27:
In file included from media_tree/include/linux/of_gpio.h:14:
media_tree/include/linux/gpio/driver.h:137:2: error: unknown type name 
'irq_flow_handler_t'
         irq_flow_handler_t handler;
         ^
media_tree/include/linux/gpio/driver.h:167:2: error: unknown type name 
'irq_flow_handler_t'
         irq_flow_handler_t parent_handler;
         ^
media_tree/include/linux/gpio/driver.h:248:29: warning: declaration of 
'struct irq_data' will not be visible outside of this function 
[-Wvisibility]
         void            (*irq_enable)(struct irq_data *data);
                                              ^
media_tree/include/linux/gpio/driver.h:255:30: warning: declaration of 
'struct irq_data' will not be visible outside of this function 
[-Wvisibility]
         void            (*irq_disable)(struct irq_data *data);
                                               ^
media_tree/include/linux/gpio/driver.h:261:29: warning: declaration of 
'struct irq_data' will not be visible outside of this function 
[-Wvisibility]
         void            (*irq_unmask)(struct irq_data *data);
                                              ^
media_tree/include/linux/gpio/driver.h:268:27: warning: declaration of 
'struct irq_data' will not be visible outside of this function 
[-Wvisibility]
         void            (*irq_mask)(struct irq_data *data);
                                            ^
media_tree/include/linux/gpio/driver.h:616:8: error: unknown type name 
'irq_hw_number_t'
                      irq_hw_number_t hwirq);
                      ^
media_tree/include/linux/gpio/driver.h:620:13: warning: declaration of 
'struct irq_data' will not be visible outside of this function 
[-Wvisibility]
                                  struct irq_data *data, bool reserve);
                                         ^
media_tree/include/linux/gpio/driver.h:622:16: warning: declaration of 
'struct irq_data' will not be visible outside of this function 
[-Wvisibility]
                                     struct irq_data *data);
                                            ^
In file included from 
media_tree/drivers/input/touchscreen/egalax_ts.c:27:
media_tree/include/linux/of_gpio.h:103:9: warning: implicit declaration 
of function 'of_count_phandle_with_args' is invalid in C99 
[-Wimplicit-function-declaration]
         return of_count_phandle_with_args(np, propname, "#gpio-cells");
                ^
media_tree/drivers/input/touchscreen/egalax_ts.c:244:6: warning: 
implicit declaration of function 'device_may_wakeup' is invalid in C99 
[-Wimplicit-function-declaration]
         if (device_may_wakeup(dev))
             ^
media_tree/drivers/input/touchscreen/egalax_ts.c:245:10: warning: 
implicit declaration of function 'enable_irq_wake' is invalid in C99 
[-Wimplicit-function-declaration]
                 return enable_irq_wake(client->irq);
                        ^
media_tree/drivers/input/touchscreen/egalax_ts.c:255:6: warning: 
implicit declaration of function 'device_may_wakeup' is invalid in C99 
[-Wimplicit-function-declaration]
         if (device_may_wakeup(dev))
             ^
media_tree/drivers/input/touchscreen/egalax_ts.c:256:10: warning: 
implicit declaration of function 'disable_irq_wake' is invalid in C99 
[-Wimplicit-function-declaration]
                 return disable_irq_wake(client->irq);
                        ^
media_tree/drivers/input/touchscreen/egalax_ts.c:273:21: warning: 
initializing 'void *' with an expression of type 'const struct 
of_device_id [2]' discards qualifiers 
[-Wincompatible-pointer-types-discards-qualifiers]
                 .of_match_table = egalax_ts_dt_ids,
                                   ^~~~~~~~~~~~~~~~
16 warnings and 17 errors generated.
*** [obj-media_tree-drivers-input-touchscreen-egalax_ts.o] Error code 1

make[2]: stopped in /usr/ports/multimedia/webcamd/work/webcamd-5.13.2.2
--- obj-media_tree-drivers-input-tablet-aiptek.o ---
1 warning generated.
1 error

make[2]: stopped in /usr/ports/multimedia/webcamd/work/webcamd-5.13.2.2
===> Compilation failed unexpectedly.
Try to set MAKE_JOBS_UNSAFE=yes and rebuild before reporting the failure 
to
the maintainer.
*** Error code 1

Stop.
make[1]: stopped in /usr/ports/multimedia/webcamd
*** Error code 1

Stop.
make: stopped in /usr/ports/multimedia/webcamd
#



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?ba14fc83b09327c042ed685fea71e2ee>