This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm whether you accept or reject these cookies being set.

A cookie will be stored in your browser regardless of choice to prevent you being asked this question again. You will be able to change your cookie settings at any time using the link in the footer.

Thread Rating:
  • 1 Vote(s) - 5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Compiling Tinkerboard's Android
#31
Please use the code button to show the code here. It is for better readness.
And please show the relevant part of code of hid-core.c, for at least some lines before your insertation and some lines behind the 2307.
Reply
#32
[/code]yoza@yoza-eME732:~$ repo init -u https://git@bitbucket.org/TinkerBoard_An...nifest.git -b /sbc/tinkerboard/asus/Android-6.0.1 -m android_20180712_v13.14.0.95.xml
fatal: Invalid refspec '+refs/heads//sbc/tinkerboard/asus/Android-6.0.1:refs/remotes/origin//sbc/tinkerboard/asus/Android-6.0.1'
fatal: Invalid refspec '+refs/heads//sbc/tinkerboard/asus/Android-6.0.1:refs/remotes/origin//sbc/tinkerboard/asus/Android-6.0.1'
fatal: cannot obtain manifest https://git@bitbucket.org/TinkerBoard_An...nifest.git
yoza@yoza-eME732:~$ repo init -u https://git@bitbucket.org/TinkerBoard_An...nifest.git -b /sbc/tinkerboard/asus/Android-6.0.1
fatal: Invalid refspec '+refs/heads//sbc/tinkerboard/asus/Android-6.0.1:refs/remotes/origin//sbc/tinkerboard/asus/Android-6.0.1'
fatal: Invalid refspec '+refs/heads//sbc/tinkerboard/asus/Android-6.0.1:refs/remotes/origin//sbc/tinkerboard/asus/Android-6.0.1'
fatal: cannot obtain manifest https://git@bitbucket.org/TinkerBoard_An...nifest.git


yoza@yoza-eME732:~/YOZA$ cd kernel
yoza@yoza-eME732:~/YOZA/kernel$ make ARCH=arm rockchip_defconfig
arch/arm/configs/rockchip_defconfig:305:warning: override: RTL8723BS changes choice state
#
# configuration written to .config
#

#### make completed successfully (2 seconds) ####

yoza@yoza-eME732:~/YOZA/kernel$ make ARCH=arm rk3288-miniarm.img -j4
scripts/kconfig/conf --silentoldconfig Kconfig
 CHK     include/generated/uapi/linux/version.h
 CHK     include/generated/utsrelease.h
 HOSTCC  scripts/kallsyms
 CC      scripts/mod/empty.o
 HOSTCC  scripts/pnmtologo
 HOSTCC  scripts/sortextable
 CC      scripts/mod/devicetable-offsets.s
scripts/sortextable.c:68:1: warning: ‘succeed_file’ defined but not used [-Wunused-function]
succeed_file(void)
^~~~~~~~~~~~
make[1]: 'include/generated/mach-types.h' is up to date.
 MKELF   scripts/mod/elfconfig.h
 GEN     scripts/mod/devicetable-offsets.h
 HOSTCC  scripts/mod/file2alias.o
 HOSTCC  scripts/mod/modpost.o
 HOSTCC  scripts/mod/sumversion.o
 CC      kernel/bounds.s
 GEN     include/generated/bounds.h
 CC      arch/arm/kernel/asm-offsets.s
 HOSTLD  scripts/mod/modpost
 ......................................................................
 
 CC      net/ipv4/protocol.o
 CC      drivers/gpu/arm/midgard/backend/gpu/mali_kbase_pm_policy.o
 CC      net/core/neighbour.o
 CC      lib/zlib_inflate/infutil.o
 CC      lib/zlib_inflate/inftrees.o
 CC      net/ipv4/ip_input.o
 CC      lib/zlib_inflate/inflate_syms.o
 CC      drivers/gpu/arm/midgard/backend/gpu/mali_kbase_time.o
 LD      lib/zlib_inflate/zlib_inflate.o
 LD      lib/zlib_inflate/built-in.o
 CC      lib/textsearch.o
 CC      lib/ts_kmp.o
 LD      drivers/gpu/arm/midgard/mali_kbase.o
 CC      net/ipv4/ip_fragment.o
 LD      drivers/gpu/arm/midgard/built-in.o
 LD      drivers/gpu/arm/built-in.o
 CC      lib/ts_bm.o
 LD      drivers/gpu/built-in.o
 CC      drivers/hid/hid-lg.o
 CC      lib/ts_fsm.o
 CC      net/core/rtnetlink.o
 CC      lib/percpu_counter.o
 CC      net/ipv4/ip_forward.o
 CC      drivers/hid/hid-lgff.o
 CC      lib/audit.o
 CC      net/ipv4/ip_options.o
 CC      drivers/hid/hid-lg2ff.o
 CC      lib/syscall.o
 CC      drivers/hid/hid-lg3ff.o
 CC      lib/nlattr.o
 CC      net/core/utils.o
 CC      drivers/hid/hid-lg4ff.o
 CC      net/ipv4/ip_output.o
 CC      lib/average.o
 CC      net/core/link_watch.o
 CC      drivers/hid/hid-picolcd_core.o
 CC      lib/cpu_rmap.o
 CC      lib/dynamic_queue_limits.o
 CC      lib/strncpy_from_user.o
 CC      net/core/filter.o
 CC      drivers/hid/hid-picolcd_debugfs.o
 CC      lib/strnlen_user.o
 CC      lib/pie.o
 CC      net/ipv4/ip_sockglue.o
 CC      lib/oid_registry.o
 CC      net/core/sock_diag.o
 CC      drivers/hid/hid-wiimote-core.o
 CC      lib/argv_split.o
 CC      lib/bug.o
 CC      net/core/dev_ioctl.o
 CC      lib/cmdline.o
 CC      lib/cpumask.o
 CC      net/ipv4/inet_hashtables.o
 CC      lib/ctype.o
 CC      lib/dec_and_lock.o
 CC      drivers/hid/hid-wiimote-ext.o
 CC      net/core/flow.o
 CC      net/ipv4/inet_timewait_sock.o
 CC      lib/decompress.o
 CC      lib/decompress_bunzip2.o
 CC      drivers/hid/hid-wiimote-debug.o
 CC      net/core/net-sysfs.o
 CC      lib/decompress_inflate.o
 CC      drivers/hid/hid-debug.o
 CC      net/ipv4/inet_connection_sock.o
 CC      lib/decompress_unlzma.o
 CC      drivers/hid/hid-core.o
 CC      lib/dump_stack.o
 CC      net/core/net-procfs.o
 CC      lib/earlycpio.o
drivers/hid/hid-core.c: In function 'hid_ignore':
drivers/hid/hid-core.c:2307:27: error: expected expression before '/' token
 CC      lib/extable.o
scripts/Makefile.build:308: recipe for target 'drivers/hid/hid-core.o' failed
make[2]: *** [drivers/hid/hid-core.o] Error 1
scripts/Makefile.build:455: recipe for target 'drivers/hid' failed
make[1]: *** [drivers/hid] Error 2
Makefile:829: recipe for target 'drivers' failed
make: *** [drivers] Error 2
make: *** Waiting for unfinished jobs....

 CC      lib/fdt.o
 CC      net/ipv4/tcp.o
 CC      lib/fdt_empty_tree.o
 CC      lib/fdt_ro.o
 CC      net/core/fib_rules.o
 CC      net/core/net-traces.o
 CC      lib/fdt_rw.o
 CC      lib/fdt_strerror.o
 CC      lib/fdt_sw.o
 CC      lib/fdt_wip.o
 LD      net/core/built-in.o
 CC      lib/flex_proportions.o
 CC      lib/idr.o
 CC      lib/int_sqrt.o
 CC      net/ipv4/tcp_input.o
 CC      lib/ioremap.o
 CC      lib/irq_regs.o
 CC      net/key/af_key.o
 CC      net/ipv6/af_inet6.o
 CC      lib/is_single_threaded.o
 CC      lib/klist.o
 CC      lib/kobject.o
 CC      net/ipv6/anycast.o
 CC      lib/kobject_uevent.o
 CC      net/ipv6/ip6_output.o
 CC      net/ipv4/tcp_output.o



#### make failed to build some targets (06:19 (mmConfuseds)) ####

Code:
code]yoza@yoza-eME732:~/YOZA/kernel$ cd drivers/hid
yoza@yoza-eME732:~/YOZA/kernel/drivers/hid$ cat hid-core.c
/*
*  HID support for Linux
*
*  Copyright (c) 1999 Andreas Gal
*  Copyright (c) 2000-2005 Vojtech Pavlik <vojtech@suse.cz>
*  Copyright (c) 2005 Michael Haboustak <mike-@cinci.rr.com> for Concept2, Inc
*  Copyright (c) 2006-2012 Jiri Kosina
*/

/*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation; either version 2 of the License, or (at your option)
* any later version.
*/

#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt

#include <linux/module.h>
#include <linux/slab.h>
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/list.h>
#include <linux/mm.h>
#include <linux/spinlock.h>
#include <asm/unaligned.h>
#include <asm/byteorder.h>
#include <linux/input.h>
#include <linux/wait.h>
#include <linux/vmalloc.h>
#include <linux/sched.h>
#include <linux/semaphore.h>

#include <linux/hid.h>
#include <linux/hiddev.h>
#include <linux/hid-debug.h>
#include <linux/hidraw.h>

#include "hid-ids.h"

/*
* Version Information
*/

#define DRIVER_DESC "HID core driver"
#define DRIVER_LICENSE "GPL"

int hid_debug = 0;
module_param_named(debug, hid_debug, int, 0600);
MODULE_PARM_DESC(debug, "toggle HID debugging messages");
EXPORT_SYMBOL_GPL(hid_debug);

static int hid_ignore_special_drivers = 0;
module_param_named(ignore_special_drivers, hid_ignore_special_drivers, int, 0600);
MODULE_PARM_DESC(debug, "Ignore any special drivers and handle all devices by generic driver");

/*
* Register a new report for a device.
*/

struct hid_report *hid_register_report(struct hid_device *device, unsigned type, unsigned id)
{
struct hid_report_enum *report_enum = device->report_enum + type;
struct hid_report *report;

if (id >= HID_MAX_IDS)
return NULL;
if (report_enum->report_id_hash[id])
return report_enum->report_id_hash[id];

report = kzalloc(sizeof(struct hid_report), GFP_KERNEL);
if (!report)
return NULL;

if (id != 0)
report_enum->numbered = 1;

report->id = id;
report->type = type;
report->size = 0;
report->device = device;
report_enum->report_id_hash[id] = report;

list_add_tail(&report->list, &report_enum->report_list);

return report;
}
EXPORT_SYMBOL_GPL(hid_register_report);

/*
* Register a new field for this report.
*/

static struct hid_field *hid_register_field(struct hid_report *report, unsigned usages, unsigned values)
{
struct hid_field *field;

if (report->maxfield == HID_MAX_FIELDS) {
hid_err(report->device, "too many fields in report\n");
return NULL;
}

field = kzalloc((sizeof(struct hid_field) +
usages * sizeof(struct hid_usage) +
values * sizeof(unsigned)), GFP_KERNEL);
if (!field)
return NULL;

field->index = report->maxfield++;
report->field[field->index] = field;
field->usage = (struct hid_usage *)(field + 1);
field->value = (s32 *)(field->usage + usages);
field->report = report;

return field;
...................................................................................
static const struct hid_device_id hid_mouse_ignore_list[] = {
/* appletouch driver */
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_ANSI) },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_ISO) },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_ANSI) },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_ISO) },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER_JIS) },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_ANSI) },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_ISO) },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER3_JIS) },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_ANSI) },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_ISO) },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_JIS) },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_HF_ANSI) },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_HF_ISO) },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER4_HF_JIS) },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING_ANSI) },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING_ISO) },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING_JIS) },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING2_ANSI) },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING2_ISO) },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING2_JIS) },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_ANSI) },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_ISO) },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING3_JIS) },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4_ANSI) },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4_ISO) },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4_JIS) },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4A_ANSI) },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4A_ISO) },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING4A_JIS) },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING5_ANSI) },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING5_ISO) },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING5_JIS) },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING5A_ANSI) },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING5A_ISO) },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING5A_JIS) },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING6_ANSI) },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING6_ISO) },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING6_JIS) },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING6A_ANSI) },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING6A_ISO) },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING6A_JIS) },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING7_ANSI) },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING7_ISO) },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING7_JIS) },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING7A_ANSI) },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING7A_ISO) },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING7A_JIS) },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING8_ANSI) },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING8_ISO) },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_WELLSPRING8_JIS) },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_FOUNTAIN_TP_ONLY) },
{ HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_GEYSER1_TP_ONLY) },
{ }
};

bool hid_ignore(struct hid_device *hdev)
{
if (hdev->quirks & HID_QUIRK_NO_IGNORE)
return false;
if (hdev->quirks & HID_QUIRK_IGNORE)
return true;

switch (hdev->vendor) {
case USB_VENDOR_ID_CODEMERCS:
/* ignore all Code Mercenaries IOWarrior devices */
if (hdev->product >= USB_DEVICE_ID_CODEMERCS_IOW_FIRST &&
hdev->product <= USB_DEVICE_ID_CODEMERCS_IOW_LAST)
return true;
break;
case USB_VENDOR_ID_DWAV:*/
/* These are handled by usbtouchscreen. hdev->type is probably
* HID_TYPE_USBNONE, but we say !HID_TYPE_USBMOUSE to match
* usbtouchscreen. */
/*if ((hdev->product == USB_DEVICE_ID_EGALAX_TOUCHCONTROLLER ||
     hdev->product == USB_DEVICE_ID_DWAV_TOUCHCONTROLLER) &&
     hdev->type !=HID_TYPE_USBMOUSE)
return true;
break;*/
case USB_VENDOR_ID_LOGITECH:
if (hdev->product >= USB_DEVICE_ID_LOGITECH_HARMONY_FIRST &&
hdev->product <= USB_DEVICE_ID_LOGITECH_HARMONY_LAST)
return true;
/*
* The Keene FM transmitter USB device has the same USB ID as
* the Logitech AudioHub Speaker, but it should ignore the hid.
* Check if the name is that of the Keene device.
* For reference: the name of the AudioHub is
* "HOLTEK  AudioHub Speaker".
*/
if (hdev->product == USB_DEVICE_ID_LOGITECH_AUDIOHUB &&
!strcmp(hdev->name, "HOLTEK  B-LINK USB Audio  "))
return true;
break;
case USB_VENDOR_ID_SOUNDGRAPH:
if (hdev->product >= USB_DEVICE_ID_SOUNDGRAPH_IMON_FIRST &&
  hdev->product <= USB_DEVICE_ID_SOUNDGRAPH_IMON_LAST)
return true;
break;
case USB_VENDOR_ID_HANWANG:
if (hdev->product >= USB_DEVICE_ID_HANWANG_TABLET_FIRST &&
  hdev->product <= USB_DEVICE_ID_HANWANG_TABLET_LAST)
return true;
break;
case USB_VENDOR_ID_JESS:
if (hdev->product == USB_DEVICE_ID_JESS_YUREX &&
hdev->type == HID_TYPE_USBNONE)
return true;
break;
case USB_VENDOR_ID_VELLEMAN:
/* These are not HID devices.  They are handled by comedi. */
if ((hdev->product >= USB_DEVICE_ID_VELLEMAN_K8055_FIRST &&
   hdev->product <= USB_DEVICE_ID_VELLEMAN_K8055_LAST) ||
  (hdev->product >= USB_DEVICE_ID_VELLEMAN_K8061_FIRST &&
   hdev->product <= USB_DEVICE_ID_VELLEMAN_K8061_LAST))
return true;
break;
case USB_VENDOR_ID_ATMEL_V_USB:
/* Masterkit MA901 usb radio based on Atmel tiny85 chip and
* it has the same USB ID as many Atmel V-USB devices. This
* usb radio is handled by radio-ma901.c driver so we want
* ignore the hid. Check the name, bus, product and ignore
* if we have MA901 usb radio.
*/
if (hdev->product == USB_DEVICE_ID_ATMEL_V_USB &&
hdev->bus == BUS_USB &&
strncmp(hdev->name, "www.masterkit.ru MA901", 22) == 0)
return true;
break;
}

if (hdev->type == HID_TYPE_USBMOUSE &&
hid_match_id(hdev, hid_mouse_ignore_list))
return true;

return !!hid_match_id(hdev, hid_ignore_list);
}
EXPORT_SYMBOL_GPL(hid_ignore);

int hid_add_device(struct hid_device *hdev)
{
static atomic_t id = ATOMIC_INIT(0);
int ret;

if (WARN_ON(hdev->status & HID_STAT_ADDED))
return -EBUSY;

/* we need to kill them here, otherwise they will stay allocated to
* wait for coming driver */
if (hid_ignore(hdev))
return -ENODEV;

/*
* Read the device report descriptor once and use as template
* for the driver-specific modifications.
*/
ret = hdev->ll_driver->parse(hdev);
if (ret)
return ret;
if (!hdev->dev_rdesc)
return -ENODEV;

/*
* Scan generic devices for group information
*/
if (hid_ignore_special_drivers ||
  !hid_match_id(hdev, hid_have_special_driver)) {
ret = hid_scan_report(hdev);
if (ret)
hid_warn(hdev, "bad device descriptor (%d)\n", ret);
}

/* XXX hack, any other cleaner solution after the driver core
* is converted to allow more than 20 bytes as the device name? */
dev_set_name(&hdev->dev, "%04X:%04X:%04X.%04X", hdev->bus,
   hdev->vendor, hdev->product, atomic_inc_return(&id));

hid_debug_register(hdev, dev_name(&hdev->dev));
ret = device_add(&hdev->dev);
if (!ret)
hdev->status |= HID_STAT_ADDED;
else
hid_debug_unregister(hdev);

return ret;
}
EXPORT_SYMBOL_GPL(hid_add_device);

/**
* hid_allocate_device - allocate new hid device descriptor
*
* Allocate and initialize hid device, so that hid_destroy_device might be
* used to free it.
*
* New hid_device pointer is returned on success, otherwise ERR_PTR encoded
* error value.
*/
struct hid_device *hid_allocate_device(void)
{
struct hid_device *hdev;
int ret = -ENOMEM;

hdev = kzalloc(sizeof(*hdev), GFP_KERNEL);
if (hdev == NULL)
return ERR_PTR(ret);

device_initialize(&hdev->dev);
hdev->dev.release = hid_device_release;
hdev->dev.bus = &hid_bus_type;

hid_close_report(hdev);

init_waitqueue_head(&hdev->debug_wait);
INIT_LIST_HEAD(&hdev->debug_list);
spin_lock_init(&hdev->debug_list_lock);
sema_init(&hdev->driver_lock, 1);
sema_init(&hdev->driver_input_lock, 1);

return hdev;
}
EXPORT_SYMBOL_GPL(hid_allocate_device);

static void hid_remove_device(struct hid_device *hdev)
{
if (hdev->status & HID_STAT_ADDED) {
device_del(&hdev->dev);
hid_debug_unregister(hdev);
hdev->status &= ~HID_STAT_ADDED;
}
kfree(hdev->dev_rdesc);
hdev->dev_rdesc = NULL;
hdev->dev_rsize = 0;
}

/**
* hid_destroy_device - free previously allocated device
*
* @hdev: hid device
*
* If you allocate hid_device through hid_allocate_device, you should ever
* free by this function.
*/
void hid_destroy_device(struct hid_device *hdev)
{
hid_remove_device(hdev);
put_device(&hdev->dev);
}
EXPORT_SYMBOL_GPL(hid_destroy_device);

int __hid_register_driver(struct hid_driver *hdrv, struct module *owner,
const char *mod_name)
{
int ret;

hdrv->driver.name = hdrv->name;
hdrv->driver.bus = &hid_bus_type;
hdrv->driver.owner = owner;
hdrv->driver.mod_name = mod_name;

INIT_LIST_HEAD(&hdrv->dyn_list);
spin_lock_init(&hdrv->dyn_lock);

ret = driver_register(&hdrv->driver);
if (ret)
return ret;

ret = driver_create_file(&hdrv->driver, &driver_attr_new_id);
if (ret)
driver_unregister(&hdrv->driver);

return ret;
}
EXPORT_SYMBOL_GPL(__hid_register_driver);

void hid_unregister_driver(struct hid_driver *hdrv)
{
driver_remove_file(&hdrv->driver, &driver_attr_new_id);
driver_unregister(&hdrv->driver);
hid_free_dynids(hdrv);
}
EXPORT_SYMBOL_GPL(hid_unregister_driver);

int hid_check_keys_pressed(struct hid_device *hid)
{
struct hid_input *hidinput;
int i;

if (!(hid->claimed & HID_CLAIMED_INPUT))
return 0;

list_for_each_entry(hidinput, &hid->inputs, list) {
for (i = 0; i < BITS_TO_LONGS(KEY_MAX); i++)
if (hidinput->input->key[i])
return 1;
}

return 0;
}

EXPORT_SYMBOL_GPL(hid_check_keys_pressed);

static int __init hid_init(void)
{
int ret;

if (hid_debug)
pr_warn("hid_debug is now used solely for parser and driver debugging.\n"
"debugfs is now used for inspecting the device (report descriptor, reports)\n");

ret = bus_register(&hid_bus_type);
if (ret) {
pr_err("can't register hid bus\n");
goto err;
}

ret = hidraw_init();
if (ret)
goto err_bus;

hid_debug_init();

return 0;
err_bus:
bus_unregister(&hid_bus_type);
err:
return ret;
}

static void __exit hid_exit(void)
{
hid_debug_exit();
hidraw_exit();
bus_unregister(&hid_bus_type);
}

module_init(hid_init);
module_exit(hid_exit);

MODULE_AUTHOR("Andreas Gal");
MODULE_AUTHOR("Vojtech Pavlik");
MODULE_AUTHOR("Jiri Kosina");
MODULE_LICENSE(DRIVER_LICENSE);

[/code]
Reply
#33
Hi YoZa,
you probably need to remove some '*/' and '/*' and it should look like this:
Code:
case USB_VENDOR_ID_DWAV:
/* These are handled by usbtouchscreen. hdev->type is probably
* HID_TYPE_USBNONE, but we say !HID_TYPE_USBMOUSE to match
* usbtouchscreen. */
if ((hdev->product == USB_DEVICE_ID_EGALAX_TOUCHCONTROLLER ||
    hdev->product == USB_DEVICE_ID_DWAV_TOUCHCONTROLLER) &&
    hdev->type !=HID_TYPE_USBMOUSE)
return true;
break;
Remenber that '/*' is for beginning the comment and '*/' for ending.
Reply
#34
I think we went over the problem with hid-core.c, but at the command:
Code:
make ARCH=arm rk3288-miniarm.img -j4
I'm getting:
Code:
yoza@yoza-eME732:~/YOZA/kernel$ make ARCH=arm rk3288-miniarm.img -j4
 CHK     include/generated/uapi/linux/version.h
 CC      scripts/mod/devicetable-offsets.s
 CHK     include/generated/utsrelease.h
make[1]: 'include/generated/mach-types.h' is up to date.
 CALL    scripts/checksyscalls.sh
 GEN     scripts/mod/devicetable-offsets.h
 HOSTCC  scripts/mod/file2alias.o
 HOSTLD  scripts/mod/modpost
 CHK     include/generated/compile.h
make[1]: 'arch/arm/boot/dts/rk3288-miniarm.dtb' is up to date.
 GEN     drivers/video/rockchip/screen/lcd.h
 Kernel: arch/arm/boot/Image is ready
 LZO     arch/arm/boot/compressed/piggy.lzo
/bin/sh: 1: lzop: not found
/home/yoza/YOZA/kernel/arch/arm/boot/compressed/Makefile:196: recipe for target 'arch/arm/boot/compressed/piggy.lzo' failed
make[2]: *** [arch/arm/boot/compressed/piggy.lzo] Error 1
/home/yoza/YOZA/kernel/arch/arm/boot/Makefile:53: recipe for target 'arch/arm/boot/compressed/vmlinux' failed
make[1]: *** [arch/arm/boot/compressed/vmlinux] Error 2
/home/yoza/YOZA/kernel/arch/arm/Makefile:304: recipe for target 'zImage' failed
make: *** [zImage] Error 2

#### make failed to build some targets (7 seconds) ####

Thank you!
Reply
#35
Code:
/bin/sh: 1: lzop: not found
There is missing a package lzop on your Ubuntu installation. To install:
Code:
sudo apt-get install lzop
Reply
#36
Thanks again!
Now I'm stuck in step 3!
The error is:

Code:
yoza@yoza-eME732:~/YOZA$ make -j4 > buildlog.log 2>&1 &
[1] 27517
 
I opened the buildlog.log file and look like this:
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=6.0.1
TARGET_PRODUCT=rk3288
TARGET_BUILD_VARIANT=userdebug
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a-neon
TARGET_CPU_VARIANT=cortex-a15
TARGET_2ND_ARCH=
TARGET_2ND_ARCH_VARIANT=
TARGET_2ND_CPU_VARIANT=
HOST_ARCH=x86_64
HOST_OS=linux
HOST_OS_EXTRA=Linux-4.15.0-43-generic-x86_64-with-Ubuntu-18.04-bionic
HOST_BUILD_TYPE=release
BUILD_ID=MXC89K
OUT_DIR=out
============================================
Checking build tools versions...
Checking build tools versions...
************************************************************************************************************************

You are attempting to build with the incorrect version
You are attempting to build with the incorrect versionof java.

of java.

 Your version is: openjdk version "1.8.0_191" OpenJDK Runtime Environment (build 1.8.0_191-8u191-b12-0ubuntu0.18.04.1-b12) OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode).

The required version is: "1.7.x"Your version is: openjdk version "1.8.0_191" OpenJDK Runtime Environment (build 1.8.0_191-8u191-b12-0ubuntu0.18.04.1-b12) OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode).

 The required version is: "1.7.x"

Please follow the machine setup instructions at

Please follow the machine setup instructions at    https://source.android.com/source/initializing.html

************************************************************    https://source.android.com/source/initializing.html

************************************************************
build/core/main.mk:174: *** stop.  Stop.
build/core/main.mk:174: *** stop.  Stop.


#### make failed to build some targets #### make failed to build some targets (57 seconds) ####

(01:25 (mmConfuseds)) ####

Thanks!

I will have to install another version of JAVA?
Reply
#37
[Image: LoTljVc.png]

I'm blocking at step 2, 1) I put the kernel and U-Boot in a folder that I name {croot} place in my office. 2) I right click in the folder {croot} and I open the terminal to enter the command indicated in step 2 of the tutorial. Am I good at making her?
French

Reply
#38
Try to use git@bitbucket instead of bitbucket

or try this
Code:
repo init -u https://git@bitbucket.org/TinkerBoard_Android/manifest.git -b sbc/tinkerboard/asus/Android-7.1.2
[-] The following 1 user Likes YoZa's post:
  • Leskriim
Reply
#39
[Image: mo0PNXC.jpg]

You are right! now it works but I have a new problem and I don't know where it comes from
French

Reply
#40
kbungu wrote on the 1 page:
1, download repo.
"repo" is a tool created by google to handle the downloading/updating/uploading of the massive number of git repositories that compose Android. repo uses a manifest to instruct it on things like what remote to use, what branch to look at and even what exact commit to checkout. It is very powerful and is a great way to manage a large number of projects that are all inter-connected.

My instructions are basically stolen from Google's repo install Instructions, with minor adjustments:
Open a terminal and execute:

Code:
curl https://storage.googleapis.com/git-repo-downloads/repo > /usr/bin/repo
chmod a+x /usr/bin/repo


ensure that /usr/bin is in your $PATH. if it is not, add it
Code:
export PATH=$PATH:/usr/bin

and you have to check : https://source.android.com/setup/build/downloading


"lobo" can you help me again with my last post, please!
[-] The following 1 user Likes YoZa's post:
  • Leskriim
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)