/drivers/usb/core/File.c

本文深入探讨了Linux内核中的USB子系统实现细节,包括设备注册与注销的过程、动态分配次要号的机制以及USB类设备的创建与管理。通过源代码分析展示了如何使用USB主设备号、文件操作接口及类设备的sysfs表示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/*
 * drivers/usb/core/file.c
 *
 * (C) Copyright Linus Torvalds 1999
 * (C) Copyright Johannes Erdfelt 1999-2001
 * (C) Copyright Andreas Gal 1999
 * (C) Copyright Gregory P. Smith 1999
 * (C) Copyright Deti Fliegl 1999 (new USB architecture)
 * (C) Copyright Randy Dunlap 2000
 * (C) Copyright David Brownell 2000-2001 (kernel hotplug, usb_device_id,
 	more docs, etc)
 * (C) Copyright Yggdrasil Computing, Inc. 2000
 *     (usb_device_id matching changes by Adam J. Richter)
 * (C) Copyright Greg Kroah-Hartman 2002-2003
 *
 */

#include <linux/module.h>
#include <linux/errno.h>
#include <linux/rwsem.h>
#include <linux/slab.h>
#include <linux/usb.h>

#include "usb.h"

#define MAX_USB_MINORS	256
static const struct file_operations *usb_minors[MAX_USB_MINORS];
static DECLARE_RWSEM(minor_rwsem);

static int usb_open(struct inode * inode, struct file * file)
{
	int minor = iminor(inode);
	const struct file_operations *c;
	int err = -ENODEV;
	const struct file_operations *old_fops, *new_fops = NULL;

	down_read(&minor_rwsem);
	c = usb_minors[minor];

	if (!c || !(new_fops = fops_get(c)))
		goto done;

	old_fops = file->f_op;
	file->f_op = new_fops;
	/* Curiouser and curiouser... NULL ->open() as "no device" ? */
	if (file->f_op->open)
		err = file->f_op->open(inode,file);
	if (err) {
		fops_put(file->f_op);
		file->f_op = fops_get(old_fops);
	}
	fops_put(old_fops);
 done:
	up_read(&minor_rwsem);
	return err;
}

static const struct file_operations usb_fops = {
	.owner =	THIS_MODULE,
	.open =		usb_open,
	.llseek =	noop_llseek,
};

static struct usb_class {
	struct kref kref;
	struct class *class;
} *usb_class;

static char *usb_devnode(struct device *dev, mode_t *mode)
{
	struct usb_class_driver *drv;

	drv = dev_get_drvdata(dev);
	if (!drv || !drv->devnode)
		return NULL;
	return drv->devnode(dev, mode);
}

static int init_usb_class(void)
{
	int result = 0;

	if (usb_class != NULL) {
		kref_get(&usb_class->kref);
		goto exit;
	}

	usb_class = kmalloc(sizeof(*usb_class), GFP_KERNEL);
	if (!usb_class) {
		result = -ENOMEM;
		goto exit;
	}

	kref_init(&usb_class->kref);
	usb_class->class = class_create(THIS_MODULE, "usb");
	if (IS_ERR(usb_class->class)) {
		result = IS_ERR(usb_class->class);
		printk(KERN_ERR "class_create failed for usb devices\n");
		kfree(usb_class);
		usb_class = NULL;
		goto exit;
	}
	usb_class->class->devnode = usb_devnode;

exit:
	return result;
}

static void release_usb_class(struct kref *kref)
{
	/* Ok, we cheat as we know we only have one usb_class */
	class_destroy(usb_class->class);
	kfree(usb_class);
	usb_class = NULL;
}

static void destroy_usb_class(void)
{
	if (usb_class)
		kref_put(&usb_class->kref, release_usb_class);
}

int usb_major_init(void)
{
	int error;

	error = register_chrdev(USB_MAJOR, "usb", &usb_fops);
	if (error)
		printk(KERN_ERR "Unable to get major %d for usb devices\n",
		       USB_MAJOR);

	return error;
}

void usb_major_cleanup(void)
{
	unregister_chrdev(USB_MAJOR, "usb");
}

/**
 * usb_register_dev - register a USB device, and ask for a minor number
 * @intf: pointer to the usb_interface that is being registered
 * @class_driver: pointer to the usb_class_driver for this device
 *
 * This should be called by all USB drivers that use the USB major number.
 * If CONFIG_USB_DYNAMIC_MINORS is enabled, the minor number will be
 * dynamically allocated out of the list of available ones.  If it is not
 * enabled, the minor number will be based on the next available free minor,
 * starting at the class_driver->minor_base.
 *
 * This function also creates a usb class device in the sysfs tree.
 *
 * usb_deregister_dev() must be called when the driver is done with
 * the minor numbers given out by this function.
 *
 * Returns -EINVAL if something bad happens with trying to register a
 * device, and 0 on success.
 */
int usb_register_dev(struct usb_interface *intf,
		     struct usb_class_driver *class_driver)
{
	int retval;
	int minor_base = class_driver->minor_base;
	int minor;
	char name[20];
	char *temp;

#ifdef CONFIG_USB_DYNAMIC_MINORS
	/* 
	 * We don't care what the device tries to start at, we want to start
	 * at zero to pack the devices into the smallest available space with
	 * no holes in the minor range.
	 */
	minor_base = 0;
#endif

	if (class_driver->fops == NULL)
		return -EINVAL;
	if (intf->minor >= 0)
		return -EADDRINUSE;

	retval = init_usb_class();
	if (retval)
		return retval;

	dev_dbg(&intf->dev, "looking for a minor, starting at %d", minor_base);

	down_write(&minor_rwsem);
	for (minor = minor_base; minor < MAX_USB_MINORS; ++minor) {
		if (usb_minors[minor])
			continue;

		usb_minors[minor] = class_driver->fops;
		intf->minor = minor;
		break;
	}
	up_write(&minor_rwsem);
	if (intf->minor < 0)
		return -EXFULL;

	/* create a usb class device for this usb interface */
	snprintf(name, sizeof(name), class_driver->name, minor - minor_base);
	temp = strrchr(name, '/');
	if (temp && (temp[1] != '\0'))
		++temp;
	else
		temp = name;
	intf->usb_dev = device_create(usb_class->class, &intf->dev,
				      MKDEV(USB_MAJOR, minor), class_driver,
				      "%s", temp);
	if (IS_ERR(intf->usb_dev)) {
		down_write(&minor_rwsem);
		usb_minors[minor] = NULL;
		intf->minor = -1;
		up_write(&minor_rwsem);
		retval = PTR_ERR(intf->usb_dev);
	}
	return retval;
}
EXPORT_SYMBOL_GPL(usb_register_dev);

/**
 * usb_deregister_dev - deregister a USB device's dynamic minor.
 * @intf: pointer to the usb_interface that is being deregistered
 * @class_driver: pointer to the usb_class_driver for this device
 *
 * Used in conjunction with usb_register_dev().  This function is called
 * when the USB driver is finished with the minor numbers gotten from a
 * call to usb_register_dev() (usually when the device is disconnected
 * from the system.)
 *
 * This function also removes the usb class device from the sysfs tree.
 *
 * This should be called by all drivers that use the USB major number.
 */
void usb_deregister_dev(struct usb_interface *intf,
			struct usb_class_driver *class_driver)
{
	int minor_base = class_driver->minor_base;
	char name[20];

#ifdef CONFIG_USB_DYNAMIC_MINORS
	minor_base = 0;
#endif

	if (intf->minor == -1)
		return;

	dbg ("removing %d minor", intf->minor);

	down_write(&minor_rwsem);
	usb_minors[intf->minor] = NULL;
	up_write(&minor_rwsem);

	snprintf(name, sizeof(name), class_driver->name, intf->minor - minor_base);
	device_destroy(usb_class->class, MKDEV(USB_MAJOR, intf->minor));
	intf->usb_dev = NULL;
	intf->minor = -1;
	destroy_usb_class();
}
EXPORT_SYMBOL_GPL(usb_deregister_dev);

uboot的build.log分析问题scripts/kconfig/conf --silentoldconfig Kconfig CHK include/config.h CFG u-boot.cfg GEN include/autoconf.mk GEN include/autoconf.mk.dep CFG spl/u-boot.cfg GEN spl/include/autoconf.mk CHK include/config/uboot.release CHK include/generated/version_autogenerated.h CHK include/generated/timestamp_autogenerated.h UPD include/generated/timestamp_autogenerated.h CC lib/asm-offsets.s CHK include/generated/generic-asm-offsets.h CC arch/arm/lib/asm-offsets.s CHK include/generated/asm-offsets.h HOSTCC tools/bmp_logo HOSTCC tools/gen_eth_addr HOSTCC tools/img2srec HOSTCC tools/mkenvimage.o HOSTCC tools/os_support.o WRAP tools/lib/crc32.c HOSTCC tools/lib/crc32.o HOSTLD tools/mkenvimage HOSTCC tools/aisimage.o HOSTCC tools/atmelimage.o WRAP tools/common/bootm.c HOSTCC tools/common/bootm.o HOSTCC tools/default_image.o WRAP tools/lib/fdtdec_common.c HOSTCC tools/lib/fdtdec_common.o WRAP tools/lib/fdtdec.c HOSTCC tools/lib/fdtdec.o HOSTCC tools/fit_common.o HOSTCC tools/fit_image.o WRAP tools/common/image-fit.c HOSTCC tools/common/image-fit.o HOSTCC tools/image-host.o WRAP tools/common/image.c HOSTCC tools/common/image.o HOSTCC tools/imagetool.o HOSTCC tools/imximage.o HOSTCC tools/kwbimage.o WRAP tools/lib/md5.c HOSTCC tools/lib/md5.o HOSTCC tools/lpc32xximage.o HOSTCC tools/mxsimage.o HOSTCC tools/omapimage.o HOSTCC tools/pblimage.o HOSTCC tools/pbl_crc32.o HOSTCC tools/vybridimage.o WRAP tools/lib/rc4.c HOSTCC tools/lib/rc4.o HOSTCC tools/rkcommon.o HOSTCC tools/rkimage.o HOSTCC tools/rksd.o HOSTCC tools/rkspi.o HOSTCC tools/socfpgaimage.o WRAP tools/lib/sha1.c HOSTCC tools/lib/sha1.o WRAP tools/lib/sha256.c HOSTCC tools/lib/sha256.o WRAP tools/common/hash.c HOSTCC tools/common/hash.o HOSTCC tools/ublimage.o HOSTCC tools/zynqimage.o HOSTCC tools/zynqmpimage.o WRAP tools/lib/libfdt/fdt.c HOSTCC tools/lib/libfdt/fdt.o WRAP tools/lib/libfdt/fdt_ro.c HOSTCC tools/lib/libfdt/fdt_ro.o WRAP tools/lib/libfdt/fdt_rw.c HOSTCC tools/lib/libfdt/fdt_rw.o WRAP tools/lib/libfdt/fdt_strerror.c HOSTCC tools/lib/libfdt/fdt_strerror.o WRAP tools/lib/libfdt/fdt_wip.c HOSTCC tools/lib/libfdt/fdt_wip.o WRAP tools/lib/libfdt/fdt_region.c HOSTCC tools/lib/libfdt/fdt_region.o WRAP tools/lib/libfdt/fdt_sw.c HOSTCC tools/lib/libfdt/fdt_sw.o HOSTCC tools/gpimage.o HOSTCC tools/gpimage-common.o HOSTCC tools/dumpimage.o HOSTLD tools/dumpimage HOSTCC tools/mkimage.o HOSTLD tools/mkimage HOSTCC tools/mksunxiboot HOSTCC tools/proftool HOSTCC tools/fdtgrep.o HOSTLD tools/fdtgrep tools/bmp_logo --gen-info ./tools/logos/denx.bmp > include/bmp_logo.h tools/bmp_logo --gen-data ./tools/logos/denx.bmp > include/bmp_logo_data.h LD arch/arm/cpu/built-in.o CC arch/arm/cpu/armv7/cache_v7.o AS arch/arm/cpu/armv7/cache_v7_asm.o CC arch/arm/cpu/armv7/cpu.o CC arch/arm/cpu/armv7/cp15.o CC arch/arm/cpu/armv7/syslib.o AS arch/arm/cpu/armv7/lowlevel_init.o CC arch/arm/cpu/armv7/sunxi/timer.o LD arch/arm/cpu/armv7/sunxi/built-in.o LD arch/arm/cpu/armv7/built-in.o AS arch/arm/cpu/armv7/start.o AS arch/arm/lib/vectors.o AS arch/arm/lib/crt0.o AS arch/arm/lib/relocate.o CC arch/arm/lib/bootm-fdt.o CC arch/arm/lib/bootm.o CC arch/arm/lib/zimage.o CC arch/arm/lib/sections.o CC arch/arm/lib/stack.o CC arch/arm/lib/interrupts.o CC arch/arm/lib/reset.o CC arch/arm/lib/cache.o CC arch/arm/lib/cache-cp15.o CC arch/arm/lib/psci-dt.o LD arch/arm/lib/built-in.o AS arch/arm/lib/ashldi3.o AS arch/arm/lib/ashrdi3.o CC arch/arm/lib/div0.o AS arch/arm/lib/div64.o AS arch/arm/lib/lib1funcs.o AS arch/arm/lib/lshrdi3.o AS arch/arm/lib/muldi3.o AS arch/arm/lib/uldivmod.o AR arch/arm/lib/lib.a CC arch/arm/lib/eabi_compat.o AS arch/arm/lib/crt0_arm_efi.o CC arch/arm/lib/reloc_arm_efi.o CC arch/arm/mach-sunxi/board.o CC arch/arm/mach-sunxi/clock.o CC arch/arm/mach-sunxi/cpu_info.o CC arch/arm/mach-sunxi/dram_helpers.o CC arch/arm/mach-sunxi/pinmux.o CC arch/arm/mach-sunxi/usb_phy.o CC arch/arm/mach-sunxi/prcm.o CC arch/arm/mach-sunxi/rsb.o CC arch/arm/mach-sunxi/clock_sun6i.o LD arch/arm/mach-sunxi/built-in.o CC board/sunxi/board.o LD board/sunxi/built-in.o CC cmd/boot.o CC cmd/bootm.o CC cmd/help.o CC cmd/version.o CC cmd/source.o CC cmd/bdinfo.o CC cmd/bootefi.o CC cmd/bootmenu.o CC cmd/bootz.o CC cmd/console.o CC cmd/echo.o CC cmd/elf.o CC cmd/exit.o CC cmd/ext4.o CC cmd/ext2.o CC cmd/fat.o CC cmd/fdt.o CC cmd/fs.o CC cmd/gpio.o CC cmd/itest.o CC cmd/load.o CC cmd/mem.o CC cmd/mii.o CC cmd/misc.o CC cmd/mmc.o CC cmd/net.o CC cmd/part.o CC cmd/pcmcia.o CC cmd/pxe.o CC cmd/setexpr.o CC cmd/test.o CC cmd/usb.o CC cmd/disk.o CC cmd/ximg.o CC cmd/nvedit.o LD cmd/built-in.o CC common/init/board_init.o LD common/init/built-in.o CC common/main.o CC common/exports.o CC common/hash.o CC common/cli_hush.o CC common/autoboot.o CC common/board_f.o CC common/board_r.o CC common/board_info.o CC common/bootm.o CC common/bootm_os.o CC common/env_attr.o CC common/env_callback.o CC common/env_flags.o CC common/env_mmc.o CC common/fdt_support.o CC common/miiphyutil.o CC common/usb.o CC common/usb_hub.o CC common/usb_storage.o CC common/flash.o CC common/edid.o CC common/splash.o CC common/menu.o CC common/usb_kbd.o CC common/env_common.o CC common/console.o CC common/dlmalloc.o CC common/malloc_simple.o CC common/image.o CC common/image-fdt.o CC common/memsize.o CC common/stdio.o CC common/cli_simple.o CC common/cli.o CC common/cli_readline.o CC common/command.o CC common/s_record.o CC common/xyzModem.o LD common/built-in.o CC disk/part.o CC disk/part_dos.o CC disk/part_iso.o CC disk/part_efi.o LD disk/built-in.o LD drivers/adc/built-in.o CC drivers/block/blk_legacy.o LD drivers/block/built-in.o CC drivers/core/device.o CC drivers/core/lists.o CC drivers/core/root.o CC drivers/core/uclass.o CC drivers/core/util.o CC drivers/core/device-remove.o CC drivers/core/simple-bus.o CC drivers/core/dump.o LD drivers/core/built-in.o CC drivers/crypto/fsl/sec.o LD drivers/crypto/fsl/built-in.o LD drivers/crypto/rsa_mod_exp/built-in.o LD drivers/crypto/built-in.o LD drivers/dfu/built-in.o LD drivers/hwmon/built-in.o CC drivers/input/keyboard-uclass.o CC drivers/input/input.o CC drivers/input/key_matrix.o LD drivers/input/built-in.o LD drivers/mailbox/built-in.o LD drivers/memory/built-in.o LD drivers/misc/built-in.o CC drivers/pcmcia/tqm8xx_pcmcia.o LD drivers/pcmcia/built-in.o LD drivers/phy/marvell/built-in.o LD drivers/pwm/built-in.o LD drivers/reset/built-in.o CC drivers/rtc/date.o LD drivers/rtc/built-in.o LD drivers/soc/built-in.o LD drivers/sound/built-in.o LD drivers/spmi/built-in.o LD drivers/sysreset/built-in.o LD drivers/thermal/built-in.o LD drivers/timer/built-in.o LD drivers/tpm/built-in.o LD drivers/twserial/built-in.o CC drivers/video/cfb_console.o CC drivers/video/sunxi_display.o CC drivers/video/videomodes.o LD drivers/video/bridge/built-in.o LD drivers/video/built-in.o LD drivers/watchdog/built-in.o LD drivers/built-in.o LD drivers/dma/built-in.o CC drivers/gpio/gpio-uclass.o CC drivers/gpio/sunxi_gpio.o LD drivers/gpio/built-in.o LD drivers/i2c/built-in.o CC drivers/mmc/mmc_legacy.o CC drivers/mmc/mmc.o CC drivers/mmc/sunxi_mmc.o CC drivers/mmc/mmc_write.o LD drivers/mmc/built-in.o LD drivers/mtd/built-in.o LD drivers/mtd/onenand/built-in.o LD drivers/mtd/spi/built-in.o LD drivers/net/built-in.o LD drivers/net/phy/built-in.o LD drivers/pci/built-in.o LD drivers/power/built-in.o LD drivers/power/battery/built-in.o LD drivers/power/domain/built-in.o LD drivers/power/fuel_gauge/built-in.o LD drivers/power/mfd/built-in.o LD drivers/power/pmic/built-in.o LD drivers/power/regulator/built-in.o CC drivers/serial/serial-uclass.o CC drivers/serial/ns16550.o LD drivers/serial/built-in.o CC drivers/spi/spi.o LD drivers/spi/built-in.o CC drivers/usb/common/common.o LD drivers/usb/common/built-in.o LD drivers/usb/dwc3/built-in.o LD drivers/usb/emul/built-in.o LD drivers/usb/eth/built-in.o LD drivers/usb/gadget/built-in.o LD drivers/usb/gadget/udc/built-in.o CC drivers/usb/host/usb-uclass.o LD drivers/usb/host/built-in.o LD drivers/usb/musb-new/built-in.o LD drivers/usb/musb/built-in.o LD drivers/usb/phy/built-in.o LD drivers/usb/ulpi/built-in.o CC fs/fs.o CC fs/ext4/ext4fs.o CC fs/ext4/ext4_common.o CC fs/ext4/dev.o LD fs/ext4/built-in.o CC fs/fat/fat_write.o CC fs/fat/file.o LD fs/fat/built-in.o LD fs/built-in.o CC lib/efi_loader/efi_image_loader.o CC lib/efi_loader/efi_boottime.o CC lib/efi_loader/efi_runtime.o CC lib/efi_loader/efi_console.o CC lib/efi_loader/efi_memory.o CC lib/efi_loader/efi_disk.o CC lib/efi_loader/efi_net.o CC lib/efi_loader/efi_smbios.o LD lib/efi_loader/built-in.o CC lib/efi_loader/helloworld.o arm-linux-gnueabihf-ld.bfd -nostdlib -znocombreloc -T ./arch/arm/lib/elf_arm_efi.lds -shared -Bsymbolic \ lib/efi_loader/helloworld.o arch/arm/lib/crt0_arm_efi.o arch/arm/lib/reloc_arm_efi.o arch/arm/lib/elf_arm_efi.lds -o lib/efi_loader/helloworld.so arm-linux-gnueabihf-objcopy -j .header -j .text -j .sdata -j .data -j .dynamic \ -j .dynsym -j .rel* -j .rela* -j .reloc \ -O binary lib/efi_loader/helloworld.so lib/efi_loader/helloworld.efi CC lib/libfdt/fdt.o CC lib/libfdt/fdt_ro.o CC lib/libfdt/fdt_rw.o CC lib/libfdt/fdt_strerror.o CC lib/libfdt/fdt_sw.o CC lib/libfdt/fdt_wip.o CC lib/libfdt/fdt_empty_tree.o CC lib/libfdt/fdt_addresses.o CC lib/libfdt/fdt_region.o CC lib/libfdt/fdt_overlay.o LD lib/libfdt/built-in.o CC lib/zlib/zlib.o LD lib/zlib/built-in.o CC lib/crc7.o CC lib/crc8.o CC lib/crc16.o CC lib/gunzip.o CC lib/smbios.o CC lib/initcall.o CC lib/lmb.o CC lib/ldiv.o CC lib/net_utils.o CC lib/qsort.o CC lib/rc4.o CC lib/list_sort.o CC lib/fdtdec_common.o CC lib/fdtdec.o CC lib/hashtable.o CC lib/errno.o CC lib/display_options.o CC lib/crc32.o CC lib/ctype.o CC lib/div64.o CC lib/hang.o CC lib/linux_compat.o CC lib/linux_string.o CC lib/membuff.o CC lib/slre.o CC lib/string.o CC lib/tables_csum.o CC lib/time.o CC lib/uuid.o CC lib/vsprintf.o CC lib/panic.o CC lib/strto.o CC lib/strmhz.o LD lib/built-in.o CC net/checksum.o CC net/arp.o CC net/bootp.o CC net/eth-uclass.o CC net/eth_common.o CC net/net.o CC net/nfs.o CC net/ping.o CC net/tftp.o LD net/built-in.o LD test/built-in.o CC test/dm/cmd_dm.o LD test/dm/built-in.o CC examples/standalone/stubs.o LD examples/standalone/libstubs.o CC examples/standalone/hello_world.o LD examples/standalone/hello_world OBJCOPY examples/standalone/hello_world.srec OBJCOPY examples/standalone/hello_world.bin LDS u-boot.lds LD u-boot DTC arch/arm/dts/sun8i-v3s-licheepi-zero.dtb ./arch/arm/dts/sun8i-v3s.dtsi:211.26-215.6: Warning (unit_address_vs_reg): /soc/pinctrl@01c20800/uart0@0: node has a unit name, but no reg or ranges property ./arch/arm/dts/sun8i-v3s.dtsi:217.24-223.6: Warning (unit_address_vs_reg): /soc/pinctrl@01c20800/mmc0@0: node has a unit name, but no reg or ranges property ./arch/arm/dts/sunxi-common-regulators.dtsi:49.33-54.4: Warning (unit_address_vs_reg): /soc/pinctrl@01c20800/ahci_pwr_pin@0: node has a unit name, but no reg or ranges property ./arch/arm/dts/sunxi-common-regulators.dtsi:56.35-61.4: Warning (unit_address_vs_reg): /soc/pinctrl@01c20800/usb0_vbus_pin@0: node has a unit name, but no reg or ranges property ./arch/arm/dts/sunxi-common-regulators.dtsi:63.35-68.4: Warning (unit_address_vs_reg): /soc/pinctrl@01c20800/usb1_vbus_pin@0: node has a unit name, but no reg or ranges property ./arch/arm/dts/sunxi-common-regulators.dtsi:70.35-75.4: Warning (unit_address_vs_reg): /soc/pinctrl@01c20800/usb2_vbus_pin@0: node has a unit name, but no reg or ranges property ./arch/arm/dts/sun8i-v3s.dtsi:99.22-116.5: Warning (simple_bus_reg): /soc/mmc@01c0f000: simple-bus unit address format error, expected "1c0f000" also defined at <stdin>:61.7-68.3 ./arch/arm/dts/sun8i-v3s.dtsi:118.22-135.5: Warning (simple_bus_reg): /soc/mmc@01c10000: simple-bus unit address format error, expected "1c10000" ./arch/arm/dts/sun8i-v3s.dtsi:137.22-154.5: Warning (simple_bus_reg): /soc/mmc@01c11000: simple-bus unit address format error, expected "1c11000" ./arch/arm/dts/sun8i-v3s.dtsi:156.25-167.5: Warning (simple_bus_reg): /soc/usb@01c19000: simple-bus unit address format error, expected "1c19000" also defined at <stdin>:76.10-79.3 ./arch/arm/dts/sun8i-v3s.dtsi:169.24-181.5: Warning (simple_bus_reg): /soc/phy@01c19400: simple-bus unit address format error, expected "1c19400" also defined at <stdin>:81.9-84.3 ./arch/arm/dts/sun8i-v3s.dtsi:183.23-190.5: Warning (simple_bus_reg): /soc/clock@01c20000: simple-bus unit address format error, expected "1c20000" ./arch/arm/dts/sun8i-v3s.dtsi:192.21-197.5: Warning (simple_bus_reg): /soc/rtc@01c20400: simple-bus unit address format error, expected "1c20400" ./arch/arm/dts/sun8i-v3s.dtsi:199.25-224.5: Warning (simple_bus_reg): /soc/pinctrl@01c20800: simple-bus unit address format error, expected "1c20800" also defined at ./arch/arm/dts/sunxi-common-regulators.dtsi:48.6-76.3 ./arch/arm/dts/sun8i-v3s.dtsi:226.18-232.5: Warning (simple_bus_reg): /soc/timer@01c20c00: simple-bus unit address format error, expected "1c20c00" ./arch/arm/dts/sun8i-v3s.dtsi:234.27-238.5: Warning (simple_bus_reg): /soc/watchdog@01c20ca0: simple-bus unit address format error, expected "1c20ca0" ./arch/arm/dts/sun8i-v3s.dtsi:240.26-249.5: Warning (simple_bus_reg): /soc/serial@01c28000: simple-bus unit address format error, expected "1c28000" also defined at <stdin>:70.8-74.3 ./arch/arm/dts/sun8i-v3s.dtsi:251.26-260.5: Warning (simple_bus_reg): /soc/serial@01c28400: simple-bus unit address format error, expected "1c28400" ./arch/arm/dts/sun8i-v3s.dtsi:262.26-271.5: Warning (simple_bus_reg): /soc/serial@01c28800: simple-bus unit address format error, expected "1c28800" ./arch/arm/dts/sun8i-v3s.dtsi:273.38-282.5: Warning (simple_bus_reg): /soc/interrupt-controller@01c81000: simple-bus unit address format error, expected "1c81000" SHIPPED dts/dt.dtb CC spl/arch/arm/mach-sunxi/board.o CC spl/arch/arm/mach-sunxi/clock.o CC spl/arch/arm/mach-sunxi/cpu_info.o CC spl/arch/arm/mach-sunxi/dram_helpers.o CC spl/arch/arm/mach-sunxi/pinmux.o CC spl/arch/arm/mach-sunxi/usb_phy.o CC spl/arch/arm/mach-sunxi/prcm.o CC spl/arch/arm/mach-sunxi/rsb.o CC spl/arch/arm/mach-sunxi/clock_sun6i.o CC spl/arch/arm/mach-sunxi/dram_sun8i_h3.o LD spl/arch/arm/mach-sunxi/built-in.o CC spl/arch/arm/cpu/armv7/cache_v7.o AS spl/arch/arm/cpu/armv7/cache_v7_asm.o CC spl/arch/arm/cpu/armv7/cpu.o CC spl/arch/arm/cpu/armv7/cp15.o CC spl/arch/arm/cpu/armv7/syslib.o AS spl/arch/arm/cpu/armv7/lowlevel_init.o CC spl/arch/arm/cpu/armv7/sunxi/timer.o AS spl/arch/arm/cpu/armv7/sunxi/fel_utils.o LD spl/arch/arm/cpu/armv7/sunxi/built-in.o LD spl/arch/arm/cpu/armv7/built-in.o AS spl/arch/arm/cpu/armv7/start.o LD spl/arch/arm/cpu/built-in.o AS spl/arch/arm/lib/vectors.o AS spl/arch/arm/lib/crt0.o CC spl/arch/arm/lib/spl.o CC spl/arch/arm/lib/zimage.o CC spl/arch/arm/lib/sections.o CC spl/arch/arm/lib/stack.o CC spl/arch/arm/lib/interrupts.o CC spl/arch/arm/lib/reset.o CC spl/arch/arm/lib/cache.o CC spl/arch/arm/lib/cache-cp15.o CC spl/arch/arm/lib/psci-dt.o LD spl/arch/arm/lib/built-in.o AS spl/arch/arm/lib/ashldi3.o AS spl/arch/arm/lib/ashrdi3.o CC spl/arch/arm/lib/div0.o AS spl/arch/arm/lib/div64.o AS spl/arch/arm/lib/lib1funcs.o AS spl/arch/arm/lib/lshrdi3.o AS spl/arch/arm/lib/muldi3.o AS spl/arch/arm/lib/uldivmod.o AR spl/arch/arm/lib/lib.a CC spl/arch/arm/lib/eabi_compat.o AS spl/arch/arm/lib/crt0_arm_efi.o CC spl/arch/arm/lib/reloc_arm_efi.o CC spl/board/sunxi/board.o LD spl/board/sunxi/built-in.o CC spl/common/spl/spl.o CC spl/common/spl/spl_mmc.o LD spl/common/spl/built-in.o CC spl/common/init/board_init.o LD spl/common/init/built-in.o CC spl/common/env_common.o CC spl/common/console.o CC spl/common/dlmalloc.o CC spl/common/malloc_simple.o CC spl/common/image.o CC spl/common/memsize.o CC spl/common/stdio.o CC spl/common/cli_simple.o CC spl/common/cli.o CC spl/common/cli_readline.o CC spl/common/command.o CC spl/common/s_record.o CC spl/common/xyzModem.o LD spl/common/built-in.o CC spl/cmd/nvedit.o LD spl/cmd/built-in.o CC spl/lib/hashtable.o CC spl/lib/errno.o CC spl/lib/display_options.o CC spl/lib/crc32.o CC spl/lib/ctype.o CC spl/lib/div64.o CC spl/lib/hang.o CC spl/lib/linux_compat.o CC spl/lib/linux_string.o CC spl/lib/membuff.o CC spl/lib/slre.o CC spl/lib/string.o CC spl/lib/tables_csum.o CC spl/lib/time.o CC spl/lib/tiny-printf.o CC spl/lib/panic.o CC spl/lib/strto.o LD spl/lib/built-in.o CC spl/disk/part.o LD spl/disk/built-in.o CC spl/drivers/block/blk_legacy.o LD spl/drivers/block/built-in.o CC spl/drivers/gpio/sunxi_gpio.o LD spl/drivers/gpio/built-in.o CC spl/drivers/mmc/mmc_legacy.o CC spl/drivers/mmc/mmc.o CC spl/drivers/mmc/sunxi_mmc.o LD spl/drivers/mmc/built-in.o LD spl/drivers/power/built-in.o LD spl/drivers/power/pmic/built-in.o LD spl/drivers/power/regulator/built-in.o CC spl/drivers/serial/serial.o CC spl/drivers/serial/serial_ns16550.o CC spl/drivers/serial/ns16550.o LD spl/drivers/serial/built-in.o LD spl/drivers/built-in.o LD spl/dts/built-in.o LD spl/fs/built-in.o LDS spl/u-boot-spl.lds LD spl/u-boot-spl OBJCOPY spl/u-boot-spl-nodtb.bin COPY spl/u-boot-spl.bin MKSUNXI spl/sunxi-spl.bin OBJCOPY u-boot-nodtb.bin CAT u-boot-dtb.bin COPY u-boot.bin MKIMAGE u-boot.img COPY u-boot.dtb BINMAN u-boot-sunxi-with-spl.bin
05-29
01-01 13:59:06.678967 1 1 I [ 3106.874830]init: processing action (sys.usb.config=adb && sys.usb.configfs=1 && sys.usb.ffs.ready=1) from (/system/etc/init/hw/init.usb.configfs.rc:24) 01-01 13:59:06.685984 1 1 I [ 3106.881847]init: Command 'symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f1' action=sys.usb.config=adb && sys.usb.configfs=1 && sys.usb.ffs.ready=1 (/system/etc/init/hw/init.usb.configfs.rc:26) took 2ms and failed: symlink() failed: File exists 01-01 13:59:06.688757 1 1 W [ 3106.884620]UDC core: couldn't find an available UDC or it's busy: -19 01-01 13:59:06.689161 1 1 I [ 3106.885024]init: Command 'write /config/usb_gadget/g1/UDC ${sys.usb.controller}' action=sys.usb.config=adb && sys.usb.configfs=1 && sys.usb.ffs.ready=1 (/system/etc/init/hw/init.usb.configfs.rc:27) took 2ms and failed: Unable to write to file '/config/usb_gadget/g1/UDC': Unable to write file contents: No such device 01-01 13:59:07.023596 13602 13602 E [ 3107.219459][ERROR]: OPLUS_CHG[CW2217]([cw_get_capacity][352]): CW2015[352]: UI_SOC = 103 larger 100!!!! 01-01 13:59:07.063182 13602 13602 E [ 3107.259045][ERROR]: OPLUS_CHG[CW2217]([cw_get_capacity][352]): CW2015[352]: UI_SOC = 103 larger 100!!!! 01-01 13:59:07.084823 13602 13602 E [ 3107.280686][ERROR]: OPLUS_CHG[MMS_GAUGE]([oplus_mms_gauge_update_cc][3883]): get battery cc error, rc=0 01-01 13:59:07.101110 13602 13602 E [ 3107.296973][ERROR]: OPLUS_CHG[CW2217]([cw_get_capacity][352]): CW2015[352]: UI_SOC = 103 larger 100!!!! 01-01 13:59:07.116107 13680 13680 I [ 3107.311970]: [INFO]: OPLUS_CHG[CHG_COMM]([oplus_comm_smooth_to_soc][3142]): soc[0 3 100 100 100 100] avg[0 1 0 0 0] fifo[100 100 100 100] 01-01 13:59:07.116188 13680 13680 E [ 3107.312051][ERROR]: OPLUS_CHG[CHG_COMM]([oplus_comm_battery_notify_tbat_check][4799]): bat_temp(585) > 53'C 01-01 13:59:07.128010 516 516 I [ 3107.323873]: ///PD dbg info 122d 01-01 13:59:07.128029 516 516 I [ 3107.323892]< 3107.323>TCPC-TCPC: bat_update_work_func battery update soc = 100 01-01 13:59:07.128029 516 516 I [ 3107.323892]< 3107.323>TCPC-TCPC: bat_update_work_func Battery Idle 01-01 13:59:07.131843 12695 12695 I [ 3107.327706]: [INFO]: OPLUS_CHG[sc6607]:sc6607_reset_watchdog_timer: enter 01-01 13:59:07.159981 13913 13913 I [ 3107.355844]: [INFO]: OPLUS_CHG[sc6607]:sc6607_set_input_volt_limit: volt = 4700, val=0x7 01-01 13:59:07.166027 1434 1434 W [ 3107.361890]healthd: battery l=100 v=4416 t=58.5 h=3 st=5 c=0 fc=7000000 cc=0 chg=u 01-01 13:59:07.179969 13680 13680 I [ 3107.375832]OPLUS_CHG[oplus_charge_info]: BATTERY[585 585 4416 4416 0 100 100 100 7368 7000 1 0x0], CHARGE[4470 0 1 0], WIRED[1 185 5107 500 3 0x0 0 0 0 2 0], WIRELESS[0 0 0 0 0 0x0 0 0 0], VOOC[0 0 0 0 0x0], UFCS[0 0 0 0x0], COMMON[8 0 5 0x100088 0 0 1 7000 100 0] 01-01 13:59:07.274454 13600 13600 I [ 3107.470317](virq: irq_count)- GICv3:arch_timer(11):1971560 GICv3:IPI(1):1737505 GICv3:IPI(2):897238 GICv3:IPI(6):333489 GICv3:glink-native-rpm-glink(33):161472 pmic_arb:pm-adc5(172):108727 GICv3:i2c_geni(180):107227 GICv3:i2c_geni(179):84340 GICv3:arch_mem_timer(13):81225 GICv3:mmc0(36):80879 01-01 13:59:07.274603 13600 13600 I [ 3107.470466](cpu: irq_count)- 0:1271515 1:1016677 2:1010488 3:1213493 4:298566 5:282403 6:268443 7:276907 01-01 13:59:07.274705 13600 13600 I [ 3107.470568](ipi: irq_count)- 0:1737505 1:897238 2:0 3:0 4:1957 5:333489 6:0 01-01 13:59:07.726521 1871 1871 I [ 3107.922384]: read descriptors 01-01 13:59:07.726669 1871 1871 I [ 3107.922532]: read strings 01-01 13:59:07.735964 1 1 I [ 3107.931827]init: processing action (sys.usb.config=adb && sys.usb.configfs=1 && sys.usb.ffs.ready=1) from (/system/etc/init/hw/init.usb.configfs.rc:24) 01-01 13:59:07.751653 1 1 W [ 3107.947516]UDC core: couldn't find an available UDC or it's busy: -19 01-01 13:59:08.779235 1871 1871 I [ 3108.975098]: read descriptors 01-01 13:59:08.779393 1871 1871 I [ 3108.975256]: read strings 01-01 13:59:08.804696 1 1 W [ 3109.000559]UDC core: couldn't find an available UDC or it's busy: -19 01-01 13:59:09.833425 1871 1871 I [ 3110.029288]: read descriptors 01-01 13:59:09.834559 1871 1871 I [ 3110.030422]: read strings 01-01 13:59:09.843181 1 1 I [ 3110.039044]init: processing action (sys.usb.config=adb && sys.usb.configfs=1 && sys.usb.ffs.ready=1) from (/system/etc/init/hw/init.usb.configfs.rc:24) 01-01 13:59:09.846371 1 1 I [ 3110.042234]init: Command 'symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f1' action=sys.usb.config=adb && sys.usb.configfs=1 && sys.usb.ffs.ready=1 (/system/etc/init/hw/init.usb.configfs.rc:26) took 1ms and failed: symlink() failed: File exists 01-01 13:59:09.847584 1 1 W [ 3110.043447]UDC core: couldn't find an available UDC or it's busy: -19 01-01 13:59:09.847773 1 1 I [ 3110.043636]init: Command 'write /config/usb_gadget/g1/UDC ${sys.usb.controller}' action=sys.usb.config=adb && sys.usb.configfs=1 && sys.usb.ffs.ready=1 (/system/etc/init/hw/init.usb.configfs.rc:27) took 0ms and failed: Unable to write to file '/config/usb_gadget/g1/UDC': Unable to write file contents: No such device 01-01 13:59:10.865193 817 817 E [ 3111.061056][ERROR]: OPLUS_CHG[CW2217]([cw_get_capacity][352]): CW2015[352]: UI_SOC = 103 larger 100!!!! 01-01 13:59:10.902853 1871 1871 I [ 3111.098716]: read descriptors 01-01 13:59:10.903019 1871 1871 I [ 3111.098882]: read strings 01-01 13:59:10.911364 1 1 I [ 3111.107227]init: processing action (sys.usb.config=adb && sys.usb.configfs=1 && sys.usb.ffs.ready=1) from (/system/etc/init/hw/init.usb.configfs.rc:24) 01-01 13:59:10.919875 1 1 I [ 3111.115738]init: Command 'symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f1' action=sys.usb.config=adb && sys.usb.configfs=1 && sys.usb.ffs.ready=1 (/system/etc/init/hw/init.usb.configfs.rc:26) took 2ms and failed: symlink() failed: File exists 01-01 13:59:10.923961 1 1 W [ 3111.119824]UDC core: couldn't find an available UDC or it's busy: -19 01-01 13:59:10.924498 1 1 I [ 3111.120361]init: Command 'write /config/usb_gadget/g1/UDC ${sys.usb.controller}' action=sys.usb.config=adb && sys.usb.configfs=1 && sys.usb.ffs.ready=1 (/system/etc/init/hw/init.usb.configfs.rc:27) took 3ms and failed: Unable to write to file '/config/usb_gadget/g1/UDC': Unable to write file contents: No such device 01-01 13:59:11.125117 8 8 E [ 3111.320980][ERROR]: OPLUS_CHG[CW2217]([cw_get_capacity][352]): CW2015[352]: UI_SOC = 103 larger 100!!!! 01-01 13:59:11.151486 8 8 E [ 3111.347349][ERROR]: OPLUS_CHG[CW2217]([cw_update_data][525]): vol = 4415 current = 0 cap = 100 temp = 585 01-01 13:59:11.959919 1871 1871 I [ 3112.155782]: read descriptors 01-01 13:59:11.960022 1871 1871 I [ 3112.155885]: read strings 01-01 13:59:11.966123 1 1 I [ 3112.161986]init: processing action (sys.usb.config=adb && sys.usb.configfs=1 && sys.usb.ffs.ready=1) from (/system/etc/init/hw/init.usb.configfs.rc:24) 01-01 13:59:11.973102 1 1 I [ 3112.168965]init: Command 'symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f1' action=sys.usb.config=adb && sys.usb.configfs=1 && sys.usb.ffs.ready=1 (/system/etc/init/hw/init.usb.configfs.rc:26) took 1ms and failed: symlink() failed: File exists 01-01 13:59:11.976702 1 1 W [ 3112.172565]UDC core: couldn't find an available UDC or it's busy: -19 01-01 13:59:11.977120 1 1 I [ 3112.172983]init: Command 'write /config/usb_gadget/g1/UDC ${sys.usb.controller}' action=sys.usb.config=adb && sys.usb.configfs=1 && sys.usb.ffs.ready=1 (/system/etc/init/hw/init.usb.configfs.rc:27) took 2ms and failed: Unable to write to file '/config/usb_gadget/g1/UDC': Unable to write file contents: No such device 01-01 13:59:12.143321 13242 13242 E [ 3112.339184][ERROR]: OPLUS_CHG[CW2217]([cw_get_capacity][352]): CW2015[352]: UI_SOC = 103 larger 100!!!! 01-01 13:59:12.181296 13242 13242 E [ 3112.377159][ERROR]: OPLUS_CHG[CW2217]([cw_get_capacity][352]): CW2015[352]: UI_SOC = 103 larger 100!!!! 01-01 13:59:12.200908 13242 13242 E [ 3112.396771][ERROR]: OPLUS_CHG[MMS_GAUGE]([oplus_mms_gauge_update_cc][3883]): get battery cc error, rc=0 01-01 13:59:12.219789 13242 13242 E [ 3112.415652][ERROR]: OPLUS_CHG[CW2217]([cw_get_capacity][352]): CW2015[352]: UI_SOC = 103 larger 100!!!! 01-01 13:59:12.235356 12809 12809 I [ 3112.431219]: [INFO]: OPLUS_CHG[CHG_COMM]([oplus_comm_smooth_to_soc][3142]): soc[0 3 100 100 100 100] avg[1 1 0 0 0] fifo[100 100 100 100] 01-01 13:59:12.235477 12809 12809 E [ 3112.431340][ERROR]: OPLUS_CHG[CHG_COMM]([oplus_comm_battery_notify_tbat_check][4799]): bat_temp(585) > 53'C 01-01 13:59:12.248278 516 516 I [ 3112.444141]: ///PD dbg info 122d 01-01 13:59:12.248311 516 516 I [ 3112.444174]< 3112.443>TCPC-TCPC: bat_update_work_func battery update soc = 100 01-01 13:59:12.248311 516 516 I [ 3112.444174]< 3112.444>TCPC-TCPC: bat_update_work_func Battery Idle 01-01 13:59:12.255329 11611 11611 I [ 3112.451192]: [INFO]: OPLUS_CHG[sc6607]:sc6607_reset_watchdog_timer: enter 01-01 13:59:12.279157 830 830 I [ 3112.475020]: [INFO]: OPLUS_CHG[sc6607]:sc6607_set_input_volt_limit: volt = 4700, val=0x7 01-01 13:59:12.286759 12809 12809 I [ 3112.482622]OPLUS_CHG[oplus_charge_info]: BATTERY[585 585 4415 4415 0 100 100 100 7368 7000 1 0x0], CHARGE[4470 0 1 0], WIRED[1 87 5096 500 3 0x0 0 0 0 2 0], WIRELESS[0 0 0 0 0 0x0 0 0 0], VOOC[0 0 0 0 0x0], UFCS[0 0 0 0x0], COMMON[8 0 5 0x100088 0 0 1 7000 100 0] 01-01 13:59:12.292084 1434 1434 W [ 3112.487947]healthd: battery l=100 v=4415 t=58.5 h=3 st=5 c=0 fc=7000000 cc=0 chg=u 01-01 13:59:13.013451 1871 1871 I [ 3113.209314]: read descriptors 01-01 13:59:13.014448 1871 1871 I [ 3113.210311]: read strings 01-01 13:59:13.023199 1 1 I [ 3113.219062]init: processing action (sys.usb.config=adb && sys.usb.configfs=1 && sys.usb.ffs.ready=1) from (/system/etc/init/hw/init.usb.configfs.rc:24) 01-01 13:59:13.035059 1 1 W [ 3113.230922]UDC core: couldn't find an available UDC or it's busy: -19 01-01 13:59:14.070376 1871 1871 I [ 3114.266239]: read descriptors 01-01 13:59:14.070535 1871 1871 I [ 3114.266398]: read strings 01-01 13:59:14.096620 1 1 W [ 3114.292483]UDC core: couldn't find an available UDC or it's busy: -19 01-01 13:59:15.119153 1871 1871 I [ 3115.315016]: read descriptors 01-01 13:59:15.119311 1871 1871 I [ 3115.315174]: read strings 01-01 13:59:15.127714 1 1 I [ 3115.323577]init: processing action (sys.usb.config=adb && sys.usb.configfs=1 && sys.usb.ffs.ready=1) from (/system/etc/init/hw/init.usb.configfs.rc:24) 01-01 13:59:15.134920 1 1 I [ 3115.330783]init: Command 'symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f1' action=sys.usb.config=adb && sys.usb.configfs=1 && sys.usb.ffs.ready=1 (/system/etc/init/hw/init.usb.configfs.rc:26) took 2ms and failed: symlink() failed: File exists 01-01 13:59:15.137969 1 1 W [ 3115.333832]UDC core: couldn't find an available UDC or it's busy: -19 01-01 13:59:15.138384 1 1 I [ 3115.334247]init: Command 'write /config/usb_gadget/g1/UDC ${sys.usb.controller}' action=sys.usb.config=adb && sys.usb.configfs=1 && sys.usb.ffs.ready=1 (/system/etc/init/hw/init.usb.configfs.rc:27) took 2ms and failed: Unable to write to file '/config/usb_gadget/g1/UDC': Unable to write file contents: No such device 01-01 13:59:15.577289 1434 1434 W [ 3115.773152]healthd: battery l=100 v=4415 t=58.5 h=3 st=5 c=0 fc=7000000 cc=0 chg=u 01-01 13:59:15.984789 817 817 E [ 3116.180652][ERROR]: OPLUS_CHG[CW2217]([cw_get_capacity][352]): CW2015[352]: UI_SOC = 103 larger 100!!!! 01-01 13:59:16.173296 1871 1871 I [ 3116.369159]: read descriptors 01-01 13:59:16.173411 1871 1871 I [ 3116.369274]: read strings 01-01 13:59:16.183227 1 1 I [ 3116.379090]init: processing action (sys.usb.config=adb && sys.usb.configfs=1 && sys.usb.ffs.ready=1) from (/system/etc/init/hw/init.usb.configfs.rc:24) 01-01 13:59:16.190469 1 1 I [ 3116.386332]init: Command 'symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f1' action=sys.usb.config=adb && sys.usb.configfs=1 && sys.usb.ffs.ready=1 (/system/etc/init/hw/init.usb.configfs.rc:26) took 3ms and failed: symlink() failed: File exists 01-01 13:59:16.193461 1 1 W [ 3116.389324]UDC core: couldn't find an available UDC or it's busy: -19 01-01 13:59:16.194308 1 1 I [ 3116.390171]init: Command 'write /config/usb_gadget/g1/UDC ${sys.usb.controller}' action=sys.usb.config=adb && sys.usb.configfs=1 && sys.usb.ffs.ready=1 (/system/etc/init/hw/init.usb.configfs.rc:27) took 2ms and failed: Unable to write to file '/config/usb_gadget/g1/UDC': Unable to write file contents: No such device 01-01 13:59:16.250226 13529 13529 E [ 3116.446089][ERROR]: OPLUS_CHG[CW2217]([cw_get_capacity][352]): CW2015[352]: UI_SOC = 103 larger 100!!!! 01-01 13:59:16.276676 13529 13529 E [ 3116.472539][ERROR]: OPLUS_CHG[CW2217]([cw_update_data][525]): vol = 4415 current = 0 cap = 100 temp = 585 01-01 13:59:16.747593 169 169 I [ 3116.943456]: [wdog_util]cpu avail mask: 0xff; ping mask: 0xe; irqs since last: 11439 01-01 13:59:16.747798 169 169 W [ 3116.943661][OPLUS_WD] oplus_show_utc_time: !@WatchDog: 2025-01-01 05:59:16.570463516 UTC 01-01 13:59:16.748428 13529 13529 I [ 3116.944291](virq: irq_count)- GICv3:arch_timer(11):1976165 GICv3:IPI(1):1741681 GICv3:IPI(2):897712 GICv3:IPI(6):334096 GICv3:glink-native-rpm-glink(33):161884 pmic_arb:pm-adc5(172):109062 GICv3:i2c_geni(180):107497 GICv3:i2c_geni(179):84498 GICv3:arch_mem_timer(13):81509 GICv3:mmc0(36):80900 01-01 13:59:16.748752 13529 13529 I [ 3116.944615](cpu: irq_count)- 0:1274609 1:1018977 2:1012910 3:1216613 4:298643 5:282439 6:268626 7:277111 01-01 13:59:16.748978 13529 13529 I [ 3116.944841](ipi: irq_count)- 0:1741681 1:897712 2:0 3:0 4:1962 5:334096 6:0 01-01 13:59:17.228087 1871 1871 I [ 3117.423950]: read descriptors 01-01 13:59:17.228190 1871 1871 I [ 3117.424053]: read strings
最新发布
07-11
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值