Merge android11-5.4.147+ (dc8c919
) into msm-5.4
* refs/heads/tmp-dc8c919: Revert dwc3 changes ANDROID: GKI: Update FCNT KMI symbol list No new symbols added that are not already in the .xml file. ANDROID: GKI : Update symbols to symbol list BACKPORT: crypto: arch - conditionalize crypto api in arch glue for lib code BACKPORT: crypto: arch/lib - limit simd usage to 4k chunks UPSTREAM: crypto: arm/blake2s - fix for big endian ANDROID: gki_defconfig: enable BLAKE2b support BACKPORT: crypto: arm/blake2b - add NEON-accelerated BLAKE2b BACKPORT: crypto: blake2b - update file comment BACKPORT: crypto: blake2b - sync with blake2s implementation UPSTREAM: crypto: arm/blake2s - add ARM scalar optimized BLAKE2s UPSTREAM: crypto: blake2s - include <linux/bug.h> instead of <asm/bug.h> UPSTREAM: crypto: blake2s - adjust include guard naming UPSTREAM: crypto: blake2s - add comment for blake2s_state fields UPSTREAM: crypto: blake2s - optimize blake2s initialization BACKPORT: crypto: blake2s - share the "shash" API boilerplate code UPSTREAM: crypto: blake2s - move update and final logic to internal/blake2s.h UPSTREAM: crypto: blake2s - remove unneeded includes UPSTREAM: crypto: x86/blake2s - define shash_alg structs using macros UPSTREAM: crypto: blake2s - define shash_alg structs using macros UPSTREAM: crypto: lib/blake2s - Move selftest prototype into header file UPSTREAM: crypto: blake2b - Fix clang optimization for ARMv7-M UPSTREAM: crypto: blake2b - rename tfm context and _setkey callback UPSTREAM: crypto: blake2b - merge _update to api callback UPSTREAM: crypto: blake2b - open code set last block helper UPSTREAM: crypto: blake2b - delete unused structs or members UPSTREAM: crypto: blake2b - simplify key init UPSTREAM: crypto: blake2b - merge blake2 init to api callback UPSTREAM: crypto: blake2b - merge _final implementation to callback BACKPORT: crypto: testmgr - add test vectors for blake2b BACKPORT: crypto: blake2b - add blake2b generic implementation UPSTREAM: crypto: blake2s - x86_64 SIMD implementation UPSTREAM: crypto: blake2s - implement generic shash driver UPSTREAM: crypto: testmgr - add test cases for Blake2s UPSTREAM: crypto: blake2s - generic C library implementation and selftest UPSTREAM: crypto: lib - tidy up lib/crypto Kconfig and Makefile ANDROID: ion heap: init ion heaps in subsys_initcall UPSTREAM: ovl: simplify file splice ANDROID: ABI: update allowed list for galaxy ANDROID: ABI: Update allowed list for QCOM ANDROID: distribute Module.symvers UPSTREAM: usb: max-3421: Prevent corruption of freed memory ANDROID: ABI: Update allowed list for QCOM UPSTREAM: driver core: Prevent warning when removing a device link from unregistered consumer UPSTREAM: udp: properly flush normal packet at GRO time UPSTREAM: net/xfrm/compat: Copy xfrm_spdattr_type_t atributes UPSTREAM: f2fs: Advertise encrypted casefolding in sysfs UPSTREAM: loop: Fix missing discard support when using LOOP_CONFIGURE UPSTREAM: thermal/drivers/sprd: Add missing MODULE_DEVICE_TABLE UPSTREAM: nvmem: sprd: Fix an error message UPSTREAM: usb: musb: Fix an error message UPSTREAM: scsi: ufs: core: Cancel rpm_dev_flush_recheck_work during system suspend UPSTREAM: scsi: ufs: core: Do not put UFS power into LPM if link is broken UPSTREAM: selinux: add proper NULL termination to the secclass_map permissions UPSTREAM: of: property: fw_devlink: do not link ".*,nr-gpios" UPSTREAM: udp: never accept GSO_FRAGLIST packets UPSTREAM: udp: skip L4 aggregation for UDP tunnel packets UPSTREAM: xfrm/compat: Cleanup WARN()s that can be user-triggered UPSTREAM: pinctrl: sunxi: fix irq bank map for the Allwinner A100 pin controller UPSTREAM: loop: Set correct device size when using LOOP_CONFIGURE UPSTREAM: loop: unset GENHD_FL_NO_PART_SCAN on LOOP_CONFIGURE ANDROID: ion_system_heap: Add __GFP_NOWARN to mid-order allocations ANDROID: drivers: gpu: drm: increase the MAX_DRM_OPEN_COUNT UPSTREAM: af_unix: fix garbage collect vs MSG_PEEK Linux 5.4.147 Revert "time: Handle negative seconds correctly in timespec64_to_ns()" Revert "posix-cpu-timers: Force next expiration recalc after itimer reset" Revert "block: nbd: add sanity check for first_minor" Revert "Bluetooth: Move shutdown callback before flushing tx and rx queue" Linux 5.4.146 clk: kirkwood: Fix a clocking boot regression backlight: pwm_bl: Improve bootloader/kernel device handover fbmem: don't allow too huge resolutions IMA: remove the dependency on CRYPTO_MD5 IMA: remove -Wmissing-prototypes warning fuse: flush extending writes fuse: truncate pagecache on atomic_o_trunc KVM: nVMX: Unconditionally clear nested.pi_pending on nested VM-Enter KVM: x86: Update vCPU's hv_clock before back to guest when tsc_offset is adjusted KVM: s390: index kvm->arch.idle_mask by vcpu_idx x86/resctrl: Fix a maybe-uninitialized build warning treated as error perf/x86/amd/ibs: Extend PERF_PMU_CAP_NO_EXCLUDE to IBS Op tty: Fix data race between tiocsti() and flush_to_ldisc() time: Handle negative seconds correctly in timespec64_to_ns() bpf: Fix pointer arithmetic mask tightening under state pruning bpf: verifier: Allocate idmap scratch in verifier env bpf: Fix leakage due to insufficient speculative store bypass mitigation bpf: Introduce BPF nospec instruction for mitigating Spectre v4 ipv4: fix endianness issue in inet_rtm_getroute_build_skb() octeontx2-af: Fix loop in free and unmap counter net: qualcomm: fix QCA7000 checksum handling net: sched: Fix qdisc_rate_table refcount leak when get tcf_block failed ipv4: make exception cache less predictible ipv6: make exception cache less predictible brcmfmac: pcie: fix oops on failure to resume and reprobe bcma: Fix memory leak for internally-handled cores ath6kl: wmi: fix an error code in ath6kl_wmi_sync_point() ASoC: wcd9335: Disable irq on slave ports in the remove function ASoC: wcd9335: Fix a memory leak in the error handling path of the probe function ASoC: wcd9335: Fix a double irq free in the remove function tty: serial: fsl_lpuart: fix the wrong mapbase value usb: bdc: Fix an error handling path in 'bdc_probe()' when no suitable DMA config is available usb: ehci-orion: Handle errors of clk_prepare_enable() in probe i2c: mt65xx: fix IRQ check CIFS: Fix a potencially linear read overflow bpf: Fix possible out of bound write in narrow load handling mmc: moxart: Fix issue with uninitialized dma_slave_config mmc: dw_mmc: Fix issue with uninitialized dma_slave_config ASoC: Intel: Skylake: Fix module resource and format selection ASoC: Intel: Skylake: Leave data as is when invoking TLV IPCs rsi: fix an error code in rsi_probe() rsi: fix error code in rsi_load_9116_firmware() i2c: s3c2410: fix IRQ check i2c: iop3xx: fix deferred probing Bluetooth: add timeout sanity check to hci_inquiry mm/swap: consider max pages in iomap_swapfile_add_extent usb: gadget: mv_u3d: request_irq() after initializing UDC nfsd4: Fix forced-expiry locking lockd: Fix invalid lockowner cast after vfs_test_lock mac80211: Fix insufficient headroom issue for AMSDU usb: phy: tahvo: add IRQ check usb: host: ohci-tmio: add IRQ check Bluetooth: Move shutdown callback before flushing tx and rx queue usb: gadget: udc: renesas_usb3: Fix soc_device_match() abuse usb: phy: twl6030: add IRQ checks usb: phy: fsl-usb: add IRQ check usb: gadget: udc: at91: add IRQ check drm/msm/dsi: Fix some reference counted resource leaks Bluetooth: fix repeated calls to sco_sock_kill counter: 104-quad-8: Return error when invalid mode during ceiling_write arm64: dts: exynos: correct GIC CPU interfaces address range on Exynos7 drm/msm/dpu: make dpu_hw_ctl_clear_all_blendstages clear necessary LMs PM: EM: Increase energy calculation precision Bluetooth: increase BTNAMSIZ to 21 chars to fix potential buffer overflow debugfs: Return error during {full/open}_proxy_open() on rmmod soc: qcom: smsm: Fix missed interrupts if state changes while masked PCI: PM: Enable PME if it can be signaled from D3cold PCI: PM: Avoid forcing PCI_D0 for wakeup reasons inconsistently media: venus: venc: Fix potential null pointer dereference on pointer fmt media: em28xx-input: fix refcount bug in em28xx_usb_disconnect leds: trigger: audio: Add an activate callback to ensure the initial brightness is set leds: lt3593: Put fwnode in any case during ->probe() i2c: highlander: add IRQ check net: cipso: fix warnings in netlbl_cipsov4_add_std cgroup/cpuset: Fix a partition bug with hotplug net/mlx5e: Prohibit inner indir TIRs in IPoIB ARM: dts: meson8b: ec100: Fix the pwm regulator supply properties ARM: dts: meson8b: mxq: Fix the pwm regulator supply properties ARM: dts: meson8b: odroidc1: Fix the pwm regulator supply properties ARM: dts: meson8: Use a higher default GPU clock frequency tcp: seq_file: Avoid skipping sk during tcp_seek_last_pos drm/amdgpu/acp: Make PM domain really work netns: protect netns ID lookups with RCU 6lowpan: iphc: Fix an off-by-one check of array index Bluetooth: sco: prevent information leak in sco_conn_defer_accept() media: coda: fix frame_mem_ctrl for YUV420 and YVU420 formats media: go7007: remove redundant initialization media: dvb-usb: Fix error handling in dvb_usb_i2c_init media: dvb-usb: fix uninit-value in vp702x_read_mac_addr media: dvb-usb: fix uninit-value in dvb_usb_adapter_dvb_init soc: qcom: rpmhpd: Use corner in power_off arm64: dts: renesas: r8a77995: draak: Remove bogus adv7511w properties ARM: dts: aspeed-g6: Fix HVI3C function-group in pinctrl dtsi bpf: Fix potential memleak and UAF in the verifier. bpf: Fix a typo of reuseport map in bpf.h. media: cxd2880-spi: Fix an error handling path soc: rockchip: ROCKCHIP_GRF should not default to y, unconditionally media: TDA1997x: enable EDID support drm/panfrost: Fix missing clk_disable_unprepare() on error in panfrost_clk_init() EDAC/i10nm: Fix NVDIMM detection spi: spi-zynq-qspi: use wait_for_completion_timeout to make zynq_qspi_exec_mem_op not interruptible spi: sprd: Fix the wrong WDG_LOAD_VAL regulator: vctrl: Avoid lockdep warning in enable/disable ops regulator: vctrl: Use locked regulator_get_voltage in probe path certs: Trigger creation of RSA module signing key if it's not an RSA key crypto: qat - use proper type for vf_mask block: nbd: add sanity check for first_minor clocksource/drivers/sh_cmt: Fix wrong setting if don't request IRQ for clock source channel lib/mpi: use kcalloc in mpi_resize genirq/timings: Fix error return code in irq_timings_test_irqs() spi: spi-pic32: Fix issue with uninitialized dma_slave_config spi: spi-fsl-dspi: Fix issue with uninitialized dma_slave_config sched: Fix UCLAMP_FLAG_IDLE setting m68k: emu: Fix invalid free in nfeth_cleanup() s390/debug: fix debug area life cycle s390/kasan: fix large PMD pages address alignment check udf_get_extendedattr() had no boundary checks. fcntl: fix potential deadlock for &fasync_struct.fa_lock crypto: qat - do not export adf_iov_putmsg() crypto: qat - fix naming for init/shutdown VF to PF notifications crypto: qat - fix reuse of completion variable crypto: qat - handle both source of interrupt in VF ISR crypto: qat - do not ignore errors from enable_vf2pf_comms() libata: fix ata_host_start() s390/cio: add dev_busid sysfs entry for each subchannel power: supply: max17042_battery: fix typo in MAx17042_TOFF nvmet: pass back cntlid on successful completion nvme-rdma: don't update queue count when failing to set io queues nvme-tcp: don't update queue count when failing to set io queues bcache: add proper error unwinding in bcache_device_init isofs: joliet: Fix iocharset=utf8 mount option udf: Fix iocharset=utf8 mount option udf: Check LVID earlier hrtimer: Ensure timerfd notification for HIGHRES=n hrtimer: Avoid double reprogramming in __hrtimer_start_range_ns() posix-cpu-timers: Force next expiration recalc after itimer reset rcu/tree: Handle VM stoppage in stall detection sched/deadline: Fix missing clock update in migrate_task_rq_dl() crypto: omap-sham - clear dma flags only after omap_sham_update_dma_stop() power: supply: axp288_fuel_gauge: Report register-address on readb / writeb errors sched/deadline: Fix reset_on_fork reporting of DL tasks crypto: mxs-dcp - Check for DMA mapping errors regmap: fix the offset of register error log locking/mutex: Fix HANDOFF condition ANDROID: GKI: db845c: Update symbols list and ABI for lts v5.4.144 Linux 5.4.145 PCI: Call Max Payload Size-related fixup quirks early x86/reboot: Limit Dell Optiplex 990 quirk to early BIOS versions xhci: fix unsafe memory usage in xhci tracing usb: mtu3: fix the wrong HS mult value usb: mtu3: use @mult for HS isoc or intr usb: host: xhci-rcar: Don't reload firmware after the completion ALSA: usb-audio: Add registration quirk for JBL Quantum 800 Revert "btrfs: compression: don't try to compress if we don't have enough pages" x86/events/amd/iommu: Fix invalid Perf result due to IOMMU PMC power-gating Revert "r8169: avoid link-up interrupt issue on RTL8106e if user enables ASPM" mm/page_alloc: speed up the iteration of max_order net: ll_temac: Remove left-over debug message powerpc/boot: Delete unneeded .globl _zimage_start ipv4/icmp: l3mdev: Perform icmp error route lookup on source device routing table (v2) USB: serial: mos7720: improve OOM-handling in read_mos_reg() igmp: Add ip_mc_list lock in ip_check_mc_rcu media: stkwebcam: fix memory leak in stk_camera_probe ARC: wireup clone3 syscall ALSA: pcm: fix divide error in snd_pcm_lib_ioctl ALSA: hda/realtek: Workaround for conflicting SSID on ASUS ROG Strix G17 ARM: 8918/2: only build return_address() if needed cryptoloop: add a deprecation warning perf/x86/amd/power: Assign pmu.module perf/x86/amd/ibs: Work around erratum #1197 perf/x86/intel/pt: Fix mask of num_address_ranges qede: Fix memset corruption net: macb: Add a NULL check on desc_ptp qed: Fix the VF msix vectors flow reset: reset-zynqmp: Fixed the argument data type gpu: ipu-v3: Fix i.MX IPU-v3 offset calculations for (semi)planar U/V formats xtensa: fix kconfig unmet dependency warning for HAVE_FUTEX_CMPXCHG kthread: Fix PF_KTHREAD vs to_kthread() race ubifs: report correct st_size for encrypted symlinks f2fs: report correct st_size for encrypted symlinks ext4: report correct st_size for encrypted symlinks fscrypt: add fscrypt_symlink_getattr() for computing st_size ext4: fix race writing to an inline_data file while its xattrs are changing Revert "once: Fix panic when module unload" Linux 5.4.144 audit: move put_tree() to avoid trim_trees refcount underflow and UAF net: don't unconditionally copy_from_user a struct ifreq for socket ioctls Revert "parisc: Add assembly implementations for memset, strlen, strcpy, strncpy and strcat" Revert "floppy: reintroduce O_NDELAY fix" btrfs: fix NULL pointer dereference when deleting device by invalid id arm64: dts: qcom: msm8994-angler: Fix gpio-reserved-ranges 85-88 KVM: x86/mmu: Treat NX as used (not reserved) for all !TDP shadow MMUs net: dsa: mt7530: fix VLAN traffic leaks again bpf: Fix cast to pointer from integer of different size warning bpf: Track contents of read-only maps as scalars vt_kdsetmode: extend console locking btrfs: fix race between marking inode needs to be logged and log syncing net/rds: dma_map_sg is entitled to merge entries drm/nouveau/disp: power down unused DP links during init drm: Copy drm_wait_vblank to user before returning qed: Fix null-pointer dereference in qed_rdma_create_qp() qed: qed ll2 race condition fixes vringh: Use wiov->used to check for read/write desc order virtio_pci: Support surprise removal of virtio pci device virtio: Improve vq->broken access to avoid any compiler optimization opp: remove WARN when no valid OPPs remain perf/x86/intel/uncore: Fix integer overflow on 23 bit left shift of a u32 usb: gadget: u_audio: fix race condition on endpoint stop drm/i915: Fix syncmap memory leak net: hns3: fix get wrong pfc_en when query PFC configuration net: hns3: fix duplicate node in VLAN list net: hns3: clear hardware resource when loading driver rtnetlink: Return correct error on changing device netns net: marvell: fix MVNETA_TX_IN_PRGRS bit number xgene-v2: Fix a resource leak in the error handling path of 'xge_probe()' ip_gre: add validation for csum_start RDMA/efa: Free IRQ vectors on error flow e1000e: Fix the max snoop/no-snoop latency for 10M IB/hfi1: Fix possible null-pointer dereference in _extend_sdma_tx_descs() RDMA/bnxt_re: Add missing spin lock initialization scsi: core: Fix hang of freezing queue between blocking and running device usb: dwc3: gadget: Stop EP0 transfers during pullup disable usb: dwc3: gadget: Fix dwc3_calc_trbs_left() USB: serial: option: add new VID/PID to support Fibocom FG150 Revert "USB: serial: ch341: fix character loss at high transfer rates" can: usb: esd_usb2: esd_usb2_rx_event(): fix the interchange of the CAN RX and TX error counters mm, oom: make the calculation of oom badness more accurate mmc: sdhci-msm: Update the software timeout value for sdhc ovl: fix uninitialized pointer read in ovl_lookup_real_one() once: Fix panic when module unload netfilter: conntrack: collect all entries in one cycle ARC: Fix CONFIG_STACKDEPOT net: qrtr: fix another OOB Read in qrtr_endpoint_post Revert "virtio: Protect vqs list access" Revert "net: igmp: fix data-race in igmp_ifc_timer_expire()" Revert "net: igmp: increase size of mr_ifc_count" Revert "PCI/MSI: Protect msi_desc::masked for multi-MSI" Linux 5.4.143 netfilter: nft_exthdr: fix endianness of tcp option cast fs: warn about impending deprecation of mandatory locks mm: memcontrol: fix occasional OOMs due to proportional memory.low reclaim mm, memcg: avoid stale protection values when cgroup is above protection ASoC: intel: atom: Fix breakage for PCM buffer address setup PCI: Increase D3 delay for AMD Renoir/Cezanne XHCI btrfs: prevent rename2 from exchanging a subvol with a directory from different parents ipack: tpci200: fix memory leak in the tpci200_register ipack: tpci200: fix many double free issues in tpci200_pci_probe slimbus: ngd: reset dma setup during runtime pm slimbus: messaging: check for valid transaction id slimbus: messaging: start transaction ids from 1 instead of zero tracing / histogram: Fix NULL pointer dereference on strcmp() on NULL event name ALSA: hda - fix the 'Capture Switch' value change notifications mmc: dw_mmc: Fix hang on data CRC error ovl: add splice file read write helper iavf: Fix ping is lost after untrusted VF had tried to change MAC i40e: Fix ATR queue selection ovs: clear skb->tstamp in forwarding path net: mdio-mux: Handle -EPROBE_DEFER correctly net: mdio-mux: Don't ignore memory allocation errors net: qlcnic: add missed unlock in qlcnic_83xx_flash_read32 virtio-net: use NETIF_F_GRO_HW instead of NETIF_F_LRO virtio-net: support XDP when not more queues vrf: Reset skb conntrack connection on VRF rcv bnxt_en: Add missing DMA memory barriers ptp_pch: Restore dependency on PCI net: 6pack: fix slab-out-of-bounds in decode_data bnxt: disable napi before canceling DIM bnxt: don't lock the tx queue from napi poll bpf: Clear zext_dst of dead insns vhost: Fix the calculation in vhost_overflow() virtio: Protect vqs list access dccp: add do-while-0 stubs for dccp_pr_debug macros cpufreq: armada-37xx: forbid cpufreq for 1.2 GHz variant iommu: Check if group is NULL before remove device Bluetooth: hidp: use correct wait queue when removing ctrl_wait drm/amd/display: Fix Dynamic bpp issue with 8K30 with Navi 1X net: usb: lan78xx: don't modify phy_device state concurrently ARM: dts: nomadik: Fix up interrupt controller node names scsi: core: Fix capacity set to zero after offlinining device scsi: core: Avoid printing an error if target_alloc() returns -ENXIO scsi: scsi_dh_rdac: Avoid crash during rdac_bus_attach() scsi: megaraid_mm: Fix end of loop tests for list_for_each_entry() dmaengine: of-dma: router_xlate to return -EPROBE_DEFER if controller is not yet available ARM: dts: am43x-epos-evm: Reduce i2c0 bus speed for tps65218 dmaengine: usb-dmac: Fix PM reference leak in usb_dmac_probe() dmaengine: xilinx_dma: Fix read-after-free bug when terminating transfers USB: core: Avoid WARNings for 0-length descriptor requests media: drivers/media/usb: fix memory leak in zr364xx_probe media: zr364xx: fix memory leaks in probe() media: zr364xx: propagate errors from zr364xx_start_readpipe() mtd: cfi_cmdset_0002: fix crash when erasing/writing AMD cards ath9k: Postpone key cache entry deletion for TXQ frames reference it ath: Modify ath_key_delete() to not need full key entry ath: Export ath_hw_keysetmac() ath9k: Clear key cache explicitly on disabling hardware ath: Use safer key clearing with key cache entries x86/fpu: Make init_fpstate correct with optimized XSAVE ext4: fix EXT4_MAX_LOGICAL_BLOCK macro Linux 5.4.142 KVM: nSVM: always intercept VMLOAD/VMSAVE when nested (CVE-2021-3656) KVM: nSVM: avoid picking up unsupported bits from L2 in int_ctl (CVE-2021-3653) iommu/vt-d: Fix agaw for a supported 48 bit guest address width vmlinux.lds.h: Handle clang's module.{c,d}tor sections ceph: take snap_empty_lock atomically with snaprealm refcount change ceph: clean up locking annotation for ceph_get_snap_realm and __lookup_snap_realm ceph: add some lockdep assertions around snaprealm handling KVM: VMX: Use current VMCS to query WAITPKG support for MSR emulation PCI/MSI: Protect msi_desc::masked for multi-MSI PCI/MSI: Use msi_mask_irq() in pci_msi_shutdown() PCI/MSI: Correct misleading comments PCI/MSI: Do not set invalid bits in MSI mask PCI/MSI: Enforce MSI[X] entry updates to be visible PCI/MSI: Enforce that MSI-X table entry is masked for update PCI/MSI: Mask all unused MSI-X entries PCI/MSI: Enable and mask MSI-X early genirq/timings: Prevent potential array overflow in __irq_timings_store() genirq/msi: Ensure deactivation on teardown x86/resctrl: Fix default monitoring groups reporting x86/ioapic: Force affinity setup before startup x86/msi: Force affinity setup before startup genirq: Provide IRQCHIP_AFFINITY_PRE_STARTUP x86/tools: Fix objdump version check again powerpc/kprobes: Fix kprobe Oops happens in booke nbd: Aovid double completion of a request vsock/virtio: avoid potential deadlock when vsock device remove xen/events: Fix race in set_evtchn_to_irq net: igmp: increase size of mr_ifc_count tcp_bbr: fix u32 wrap bug in round logic if bbr_init() called after 2B packets net: linkwatch: fix failure to restore device state across suspend/resume net: bridge: fix memleak in br_add_if() net: dsa: sja1105: fix broken backpressure in .port_fdb_dump net: dsa: lantiq: fix broken backpressure in .port_fdb_dump net: dsa: lan9303: fix broken backpressure in .port_fdb_dump net: igmp: fix data-race in igmp_ifc_timer_expire() net: Fix memory leak in ieee802154_raw_deliver net: dsa: microchip: Fix ksz_read64() drm/meson: fix colour distortion from HDR set during vendor u-boot net/mlx5: Fix return value from tracer initialization psample: Add a fwd declaration for skbuff iavf: Set RSS LUT and key in reset handle path net: sched: act_mirred: Reset ct info when mirror/redirect skb ppp: Fix generating ifname when empty IFLA_IFNAME is specified net: phy: micrel: Fix link detection on ksz87xx switch" platform/x86: pcengines-apuv2: Add missing terminating entries to gpio-lookup tables platform/x86: pcengines-apuv2: revert wiring up simswitch GPIO as LED net: dsa: mt7530: add the missing RxUnicast MIB counter ASoC: cs42l42: Fix LRCLK frame start edge netfilter: nf_conntrack_bridge: Fix memory leak when error ASoC: cs42l42: Remove duplicate control for WNF filter frequency ASoC: cs42l42: Fix inversion of ADC Notch Switch control ASoC: cs42l42: Don't allow SND_SOC_DAIFMT_LEFT_J ASoC: cs42l42: Correct definition of ADC Volume control ieee802154: hwsim: fix GPF in hwsim_new_edge_nl ieee802154: hwsim: fix GPF in hwsim_set_edge_lqi libnvdimm/region: Fix label activation vs errors ACPI: NFIT: Fix support for virtual SPA ranges ceph: reduce contention in ceph_check_delayed_caps() i2c: dev: zero out array used for i2c reads from userspace ASoC: intel: atom: Fix reference to PCM buffer address ASoC: xilinx: Fix reference to PCM buffer address iio: adc: Fix incorrect exit of for-loop iio: humidity: hdc100x: Add margin to the conversion time iio: adc: ti-ads7950: Ensure CS is deasserted after reading channels Linux 5.4.141 btrfs: don't flush from btrfs_delayed_inode_reserve_metadata btrfs: export and rename qgroup_reserve_meta btrfs: qgroup: don't commit transaction when we already hold the handle net: xilinx_emaclite: Do not print real IOMEM pointer btrfs: fix lockdep splat when enabling and disabling qgroups btrfs: qgroup: remove ASYNC_COMMIT mechanism in favor of reserve retry-after-EDQUOT btrfs: transaction: Cleanup unused TRANS_STATE_BLOCKED btrfs: qgroup: try to flush qgroup space when we get -EDQUOT btrfs: qgroup: allow to unreserve range without releasing other ranges btrfs: make btrfs_qgroup_reserve_data take btrfs_inode btrfs: make qgroup_free_reserved_data take btrfs_inode ovl: prevent private clone if bind mount is not allowed ppp: Fix generating ppp unit id when ifname is not specified ALSA: hda: Add quirk for ASUS Flow x13 USB:ehci:fix Kunpeng920 ehci hardware problem KVM: X86: MMU: Use the correct inherited permissions to get shadow page usb: dwc3: gadget: Avoid runtime resume if disabling pullup usb: dwc3: gadget: Disable gadget IRQ during pullup disable usb: dwc3: gadget: Clear DEP flags after stop transfers in ep disable usb: dwc3: gadget: Prevent EP queuing while stopping transfers usb: dwc3: gadget: Restart DWC3 gadget when enabling pullup usb: dwc3: gadget: Allow runtime suspend if UDC unbinded usb: dwc3: Stop active transfers before halting the controller tracing: Reject string operand in the histogram expression media: v4l2-mem2mem: always consider OUTPUT queue during poll tee: Correct inappropriate usage of TEE_SHM_DMA_BUF flag KVM: SVM: Fix off-by-one indexing when nullifying last used SEV VMCB Linux 5.4.140 arm64: fix compat syscall return truncation net/qla3xxx: fix schedule while atomic in ql_wait_for_drvr_lock and ql_adapter_reset alpha: Send stop IPI to send to online CPUs virt_wifi: fix error on connect reiserfs: check directory items on read from disk reiserfs: add check for root_inode in reiserfs_fill_super libata: fix ata_pio_sector for CONFIG_HIGHMEM bpf, selftests: Adjust few selftest result_unpriv outcomes perf/x86/amd: Don't touch the AMD64_EVENTSEL_HOSTONLY bit inside the guest soc: ixp4xx/qmgr: fix invalid __iomem access spi: meson-spicc: fix memory leak in meson_spicc_remove soc: ixp4xx: fix printing resources arm64: vdso: Avoid ISB after reading from cntvct_el0 KVM: x86/mmu: Fix per-cpu counter corruption on 32-bit builds KVM: Do not leak memory for duplicate debugfs directories KVM: x86: accept userspace interrupt only if no event is injected md/raid10: properly indicate failure when ending a failed write request pcmcia: i82092: fix a null pointer dereference bug timers: Move clearing of base::timer_running under base:: Lock serial: 8250_pci: Avoid irq sharing for MSI(-X) interrupts. serial: 8250_pci: Enumerate Elkhart Lake UARTs via dedicated driver MIPS: Malta: Do not byte-swap accesses to the CBUS UART serial: 8250: Mask out floating 16/32-bit bus bits serial: 8250_mtk: fix uart corruption issue when rx power off serial: tegra: Only print FIFO error message when an error occurs ext4: fix potential htree corruption when growing large_dir directories pipe: increase minimum default pipe size to 2 pages media: rtl28xxu: fix zero-length control request staging: rtl8712: get rid of flush_scheduled_work staging: rtl8723bs: Fix a resource leak in sd_int_dpc tpm_ftpm_tee: Free and unregister TEE shared memory during kexec optee: Fix memory leak when failing to register shm pages tee: add tee_shm_alloc_kernel_buf() optee: Clear stale cache entries during initialization tracing / histogram: Give calculation hist_fields a size scripts/tracing: fix the bug that can't parse raw_trace_func clk: fix leak on devm_clk_bulk_get_all() unwind usb: otg-fsm: Fix hrtimer list corruption usb: gadget: f_hid: idle uses the highest byte for duration usb: gadget: f_hid: fixed NULL pointer dereference usb: gadget: f_hid: added GET_IDLE and SET_IDLE handlers usb: cdns3: Fixed incorrect gadget state ALSA: usb-audio: Add registration quirk for JBL Quantum 600 ALSA: hda/realtek: add mic quirk for Acer SF314-42 firmware_loader: fix use-after-free in firmware_fallback_sysfs firmware_loader: use -ETIMEDOUT instead of -EAGAIN in fw_load_sysfs_fallback USB: serial: ftdi_sio: add device ID for Auto-M3 OP-COM v2 USB: serial: ch341: fix character loss at high transfer rates USB: serial: option: add Telit FD980 composition 0x1056 USB: usbtmc: Fix RCU stall warning Bluetooth: defer cleanup of resources in hci_unregister_dev() blk-iolatency: error out if blk_get_queue() failed in iolatency_set_limit() net: vxge: fix use-after-free in vxge_device_unregister net: fec: fix use-after-free in fec_drv_remove net: pegasus: fix uninit-value in get_interrupt_interval bnx2x: fix an error code in bnx2x_nic_load() mips: Fix non-POSIX regexp net: ipv6: fix returned variable type in ip6_skb_dst_mtu nfp: update ethtool reporting of pauseframe control sctp: move the active_key update after sh_keys is added gpio: tqmx86: really make IRQ optional net: natsemi: Fix missing pci_disable_device() in probe and remove net: phy: micrel: Fix detection of ksz87xx switch net: dsa: sja1105: invalidate dynamic FDB entries learned concurrently with statically added ones net: dsa: sja1105: overwrite dynamic FDB entries with static ones in .port_fdb_add net, gro: Set inner transport header offset in tcp/udp GRO hook dmaengine: imx-dma: configure the generic DMA type to make it work media: videobuf2-core: dequeue if start_streaming fails scsi: sr: Return correct event when media event code is 3 spi: imx: mx51-ecspi: Fix low-speed CONFIGREG delay calculation spi: imx: mx51-ecspi: Reinstate low-speed CONFIGREG delay omap5-board-common: remove not physically existing vdds_1v8_main fixed-regulator ARM: dts: am437x-l4: fix typo in can@0 node clk: stm32f4: fix post divisor setup for I2S/SAI PLLs ALSA: usb-audio: fix incorrect clock source setting arm64: dts: armada-3720-turris-mox: remove mrvl,i2c-fast-mode ARM: dts: imx: Swap M53Menlo pinctrl_power_button/pinctrl_power_out pins ARM: imx: fix missing 3rd argument in macro imx_mmdc_perf_init ARM: dts: colibri-imx6ull: limit SDIO clock to 25MHz ARM: dts: imx6qdl-sr-som: Increase the PHY reset duration to 10ms ARM: imx: add missing clk_disable_unprepare() ARM: imx: add missing iounmap() arm64: dts: ls1028a: fix node name for the sysclk ALSA: seq: Fix racy deletion of subscriber Revert "ACPICA: Fix memory leak caused by _CID repair function" ANDROID: GKI: fix up android/abi_gki_aarch64.xml merge Linux 5.4.139 spi: mediatek: Fix fifo transfer bpf, selftests: Adjust few selftest outcomes wrt unreachable code bpf, selftests: Add a verifier test for assigning 32bit reg states to 64bit ones bpf: Test_verifier, add alu32 bounds tracking tests bpf: Fix leakage under speculation on mispredicted branches bpf: Do not mark insn as seen under speculative path verification bpf: Inherit expanded/patched seen count from old aux data Revert "watchdog: iTCO_wdt: Account for rebooting on second timeout" firmware: arm_scmi: Add delayed response status check firmware: arm_scmi: Ensure drivers provide a probe function Revert "Bluetooth: Shutdown controller after workqueues are flushed or cancelled" ACPI: fix NULL pointer dereference nvme: fix nvme_setup_command metadata trace event net: Fix zero-copy head len calculation. qed: fix possible unpaired spin_{un}lock_bh in _qed_mcp_cmd_and_union() r8152: Fix potential PM refcount imbalance ASoC: tlv320aic31xx: fix reversed bclk/wclk master bits spi: stm32h7: fix full duplex irq handler handling regulator: rt5033: Fix n_voltages settings for BUCK and LDO btrfs: fix lost inode on log replay after mix of fsync, rename and inode eviction btrfs: fix race causing unnecessary inode logging during link and rename btrfs: do not commit logs and transactions during link and rename operations btrfs: delete duplicated words + other fixes in comments Linux 5.4.138 can: j1939: j1939_session_deactivate(): clarify lifetime of session object i40e: Add additional info to PHY type error Revert "perf map: Fix dso->nsinfo refcounting" powerpc/pseries: Fix regression while building external modules PCI: mvebu: Setup BAR0 in order to fix MSI can: hi311x: fix a signedness bug in hi3110_cmd() sis900: Fix missing pci_disable_device() in probe and remove tulip: windbond-840: Fix missing pci_disable_device() in probe and remove sctp: fix return value check in __sctp_rcv_asconf_lookup net/mlx5e: Fix nullptr in mlx5e_hairpin_get_mdev() net/mlx5: Fix flow table chaining net: llc: fix skb_over_panic mlx4: Fix missing error code in mlx4_load_one() net: Set true network header for ECN decapsulation tipc: fix sleeping in tipc accept routine i40e: Fix log TC creation failure when max num of queues is exceeded i40e: Fix queue-to-TC mapping on Tx i40e: Fix firmware LLDP agent related warning i40e: Fix logic of disabling queues netfilter: nft_nat: allow to specify layer 4 protocol NAT only netfilter: conntrack: adjust stop timestamp to real expiry value cfg80211: Fix possible memory leak in function cfg80211_bss_update nfc: nfcsim: fix use after free during module unload NIU: fix incorrect error return, missed in previous revert HID: wacom: Re-enable touch by default for Cintiq 24HDT / 27QHDT can: esd_usb2: fix memory leak can: ems_usb: fix memory leak can: usb_8dev: fix memory leak can: mcba_usb_start(): add missing urb->transfer_dma initialization can: raw: raw_setsockopt(): fix raw_rcv panic for sock UAF can: j1939: j1939_xtp_rx_dat_one(): fix rxtimer value between consecutive TP.DT to 750ms ocfs2: issue zeroout to EOF blocks ocfs2: fix zero out valid data KVM: add missing compat KVM_CLEAR_DIRTY_LOG x86/kvm: fix vcpu-id indexed array sizes Revert "ACPI: resources: Add checks for ACPI IRQ override" btrfs: mark compressed range uptodate only if all bio succeed btrfs: fix rw device counting in __btrfs_free_extra_devids x86/asm: Ensure asm/proto.h can be included stand-alone net_sched: check error pointer in tcf_dump_walker() Linux 5.4.137 ipv6: ip6_finish_output2: set sk into newly allocated nskb ARM: dts: versatile: Fix up interrupt controller node names iomap: remove the length variable in iomap_seek_hole iomap: remove the length variable in iomap_seek_data cifs: fix the out of range assignment to bit fields in parse_server_interfaces firmware: arm_scmi: Fix range check for the maximum number of pending messages firmware: arm_scmi: Fix possible scmi_linux_errmap buffer overflow hfs: add lock nesting notation to hfs_find_init hfs: fix high memory mapping in hfs_bnode_read hfs: add missing clean-up in hfs_fill_super ipv6: allocate enough headroom in ip6_finish_output2() sctp: move 198 addresses from unusable to private scope net: annotate data race around sk_ll_usec net/802/garp: fix memleak in garp_request_join() net/802/mrp: fix memleak in mrp_request_join() cgroup1: fix leaked context root causing sporadic NULL deref in LTP workqueue: fix UAF in pwq_unbound_release_workfn() af_unix: fix garbage collect vs MSG_PEEK KVM: x86: determine if an exception has an error code only when injecting it. tools: Allow proper CC/CXX/... override with LLVM=1 in Makefile.include selftest: fix build error in tools/testing/selftests/vm/userfaultfd.c ANDROID: Update android/abi_gki_aarch64.xml ANDROID: Update android/abi_gki_aarch64_goldfish Linux 5.4.136 xhci: add xhci_get_virt_ep() helper perf inject: Close inject.output on exit PCI: Mark AMD Navi14 GPU ATS as broken btrfs: compression: don't try to compress if we don't have enough pages iio: accel: bma180: Fix BMA25x bandwidth register values iio: accel: bma180: Use explicit member assignment net: bcmgenet: ensure EXT_ENERGY_DET_MASK is clear net: dsa: mv88e6xxx: use correct .stats_set_histogram() on Topaz drm: Return -ENOTTY for non-drm ioctls nds32: fix up stack guard gap rbd: always kick acquire on "acquired" and "released" notifications rbd: don't hold lock_rwsem while running_list is being drained hugetlbfs: fix mount mode command line processing userfaultfd: do not untag user pointers selftest: use mmap instead of posix_memalign to allocate memory ixgbe: Fix packet corruption due to missing DMA sync media: ngene: Fix out-of-bounds bug in ngene_command_config_free_buf() btrfs: check for missing device in btrfs_trim_fs tracing: Fix bug in rb_per_cpu_empty() that might cause deadloop. tracing/histogram: Rename "cpu" to "common_cpu" firmware/efi: Tell memblock about EFI iomem reservations usb: dwc2: gadget: Fix sending zero length packet in DDMA mode. USB: serial: cp210x: add ID for CEL EM3588 USB ZigBee stick USB: serial: cp210x: fix comments for GE CS1000 USB: serial: option: add support for u-blox LARA-R6 family usb: renesas_usbhs: Fix superfluous irqs happen after usb_pkt_pop() usb: max-3421: Prevent corruption of freed memory USB: usb-storage: Add LaCie Rugged USB3-FW to IGNORE_UAS usb: hub: Fix link power management max exit latency (MEL) calculations usb: hub: Disable USB 3 device initiated lpm if exit latency is too high KVM: PPC: Book3S HV Nested: Sanitise H_ENTER_NESTED TM state KVM: PPC: Book3S: Fix H_RTAS rets buffer overflow xhci: Fix lost USB 2 remote wake ALSA: hdmi: Expose all pins on MSI MS-7C94 board ALSA: sb: Fix potential ABBA deadlock in CSP driver ALSA: usb-audio: Add registration quirk for JBL Quantum headsets ALSA: usb-audio: Add missing proc text entry for BESPOKEN type s390/boot: fix use of expolines in the DMA code s390/ftrace: fix ftrace_update_ftrace_func implementation Revert "MIPS: add PMD table accounting into MIPS'pmd_alloc_one" proc: Avoid mixing integer types in mem_rw() drm/panel: raspberrypi-touchscreen: Prevent double-free net: sched: cls_api: Fix the the wrong parameter sctp: update active_key for asoc when old key is being replaced nvme: set the PRACT bit when using Write Zeroes with T10 PI r8169: Avoid duplicate sysfs entry creation error afs: Fix tracepoint string placement with built-in AFS Revert "USB: quirks: ignore remote wake-up on Fibocom L850-GL LTE modem" nvme-pci: don't WARN_ON in nvme_reset_work if ctrl.state is not RESETTING ipv6: fix another slab-out-of-bounds in fib6_nh_flush_exceptions net/sched: act_skbmod: Skip non-Ethernet packets net: hns3: fix rx VLAN offload state inconsistent issue net/tcp_fastopen: fix data races around tfo_active_disable_stamp net: hisilicon: rename CACHE_LINE_MASK to avoid redefinition bnxt_en: Check abort error state in bnxt_half_open_nic() bnxt_en: Add missing check for BNXT_STATE_ABORT_ERR in bnxt_fw_rset_task() bnxt_en: Refresh RoCE capabilities in bnxt_ulp_probe() bnxt_en: Improve bnxt_ulp_stop()/bnxt_ulp_start() call sequence. spi: cadence: Correct initialisation of runtime PM again scsi: target: Fix protect handling in WRITE SAME(32) scsi: iscsi: Fix iface sysfs attr detection netrom: Decrease sock refcount when sock timers expire net: sched: fix memory leak in tcindex_partial_destroy_work KVM: PPC: Fix kvm_arch_vcpu_ioctl vcpu_load leak KVM: PPC: Book3S: Fix CONFIG_TRANSACTIONAL_MEM=n crash net: decnet: Fix sleeping inside in af_decnet efi/tpm: Differentiate missing and invalid final event log table. net: fix uninit-value in caif_seqpkt_sendmsg bpftool: Check malloc return value in mount_bpffs_for_pin bpf, sockmap, tcp: sk_prot needs inuse_idx set for proc stats s390/bpf: Perform r1 range checking before accessing jit->seen_reg[r1] liquidio: Fix unintentional sign extension issue on left shift of u16 ASoC: rt5631: Fix regcache sync errors on resume spi: mediatek: fix fifo rx mode regulator: hi6421: Fix getting wrong drvdata regulator: hi6421: Use correct variable type for regmap api val argument spi: stm32: fixes pm_runtime calls in probe/remove spi: stm32: Use dma_request_chan() instead dma_request_slave_channel() spi: imx: add a check for speed_hz before calculating the clock perf data: Close all files in close_dir() perf probe-file: Delete namelist in del_events() on the error path perf lzma: Close lzma stream on exit perf script: Fix memory 'threads' and 'cpus' leaks on exit perf dso: Fix memory leak in dso__new_map() perf test event_update: Fix memory leak of evlist perf test session_topology: Delete session->evlist perf env: Fix sibling_dies memory leak perf probe: Fix dso->nsinfo refcounting perf map: Fix dso->nsinfo refcounting nvme-pci: do not call nvme_dev_remove_admin from nvme_remove cxgb4: fix IRQ free race during driver unload pwm: sprd: Ensure configuring period and duty_cycle isn't wrongly skipped selftests: icmp_redirect: IPv6 PMTU info should be cleared after redirect selftests: icmp_redirect: remove from checking for IPv6 route get ipv6: fix 'disable_policy' for fwd packets gve: Fix an error handling path in 'gve_probe()' igb: Fix position of assignment to *ring igb: Check if num of q_vectors is smaller than max before array access iavf: Fix an error handling path in 'iavf_probe()' e1000e: Fix an error handling path in 'e1000_probe()' fm10k: Fix an error handling path in 'fm10k_probe()' igb: Fix an error handling path in 'igb_probe()' igc: Fix an error handling path in 'igc_probe()' igc: Prefer to use the pci_release_mem_regions method ixgbe: Fix an error handling path in 'ixgbe_probe()' igc: change default return of igc_read_phy_reg() igb: Fix use-after-free error during reset igc: Fix use-after-free error during reset Linux 5.4.135 udp: annotate data races around unix_sk(sk)->gso_size perf test bpf: Free obj_buf bpftool: Properly close va_list 'ap' by va_end() on error ipv6: tcp: drop silly ICMPv6 packet too big messages tcp: annotate data races around tp->mtu_info dma-buf/sync_file: Don't leak fences on merge failure net: fddi: fix UAF in fza_probe net: validate lwtstate->data before returning from skb_tunnel_info() net: send SYNACK packet with accepted fwmark net: ti: fix UAF in tlan_remove_one net: qcom/emac: fix UAF in emac_remove net: moxa: fix UAF in moxart_mac_probe net: ip_tunnel: fix mtu calculation for ETHER tunnel devices net: bcmgenet: Ensure all TX/RX queues DMAs are disabled net: bridge: sync fdb to new unicast-filtering ports net/sched: act_ct: fix err check for nf_conntrack_confirm netfilter: ctnetlink: suspicious RCU usage in ctnetlink_dump_helpinfo net: ipv6: fix return value of ip6_skb_dst_mtu net: dsa: mv88e6xxx: enable .rmu_disable() on Topaz net: dsa: mv88e6xxx: enable .port_set_policy() on Topaz dm writecache: return the exact table values that were set mm: slab: fix kmem_cache_create failed when sysfs node not destroyed usb: cdns3: Enable TDL_CHK only for OUT ep f2fs: Show casefolding support only when supported arm64: dts: marvell: armada-37xx: move firmware node to generic dtsi file firmware: turris-mox-rwtm: add marvell,armada-3700-rwtm-firmware compatible string arm64: dts: armada-3720-turris-mox: add firmware node cifs: prevent NULL deref in cifs_compose_mount_options() s390: introduce proper type handling call_on_stack() macro sched/fair: Fix CFS bandwidth hrtimer expiry type scsi: qedf: Add check to synchronize abort and flush scsi: libfc: Fix array index out of bound exception scsi: libsas: Add LUN number check in .slave_alloc callback scsi: aic7xxx: Fix unintentional sign extension issue on left shift of u8 rtc: max77686: Do not enforce (incorrect) interrupt trigger type kbuild: mkcompile_h: consider timestamp if KBUILD_BUILD_TIMESTAMP is set thermal/core: Correct function name thermal_zone_device_unregister() arm64: dts: imx8mq: assign PCIe clocks arm64: dts: ls208xa: remove bus-num from dspi node firmware: tegra: bpmp: Fix Tegra234-only builds soc/tegra: fuse: Fix Tegra234-only builds ARM: dts: stm32: move stmmac axi config in ethernet node on stm32mp15 ARM: dts: stm32: fix i2c node name on stm32f746 to prevent warnings ARM: dts: rockchip: fix supply properties in io-domains nodes arm64: dts: juno: Update SCPI nodes as per the YAML schema ARM: dts: stm32: fix timer nodes on STM32 MCU to prevent warnings ARM: dts: stm32: fix RCC node name on stm32f429 MCU ARM: dts: stm32: fix gpio-keys node on STM32 MCU boards ARM: dts: am437x-gp-evm: fix ti,no-reset-on-init flag for gpios ARM: dts: am57xx-cl-som-am57x: fix ti,no-reset-on-init flag for gpios kbuild: sink stdout from cmd for silent build rtc: mxc_v2: add missing MODULE_DEVICE_TABLE ARM: imx: pm-imx5: Fix references to imx5_cpu_suspend_info ARM: dts: imx6: phyFLEX: Fix UART hardware flow control ARM: dts: Hurricane 2: Fix NAND nodes names ARM: dts: BCM63xx: Fix NAND nodes names ARM: NSP: dts: fix NAND nodes names ARM: Cygnus: dts: fix NAND nodes names ARM: brcmstb: dts: fix NAND nodes names reset: ti-syscon: fix to_ti_syscon_reset_data macro arm64: dts: rockchip: Fix power-controller node names for rk3328 arm64: dts: rockchip: Fix power-controller node names for px30 ARM: dts: rockchip: Fix power-controller node names for rk3288 ARM: dts: rockchip: Fix power-controller node names for rk3188 ARM: dts: rockchip: Fix power-controller node names for rk3066a ARM: dts: rockchip: Fix IOMMU nodes properties on rk322x ARM: dts: rockchip: Fix the timer clocks order arm64: dts: rockchip: fix pinctrl sleep nodename for rk3399.dtsi ARM: dts: rockchip: fix pinctrl sleep nodename for rk3036-kylin and rk3288 ARM: dts: gemini: add device_type on pci ARM: dts: gemini: rename mdio to the right name Conflicts: drivers/mmc/host/sdhci-msm.c drivers/scsi/ufs/ufshcd.c drivers/staging/android/ion/heaps/ion_cma_heap.c drivers/usb/dwc3/gadget.c include/linux/oom.h kernel/time/hrtimer.c mm/oom_kill.c net/qrtr/qrtr.c Change-Id: I1c29c9ef4233acd05550475b29b8f7d30b6c452d Signed-off-by: Srinivasarao Pathipati <quic_spathi@quicinc.com>
This commit is contained in:
commit
828abb51dd
@ -45,14 +45,24 @@ how the user addresses are used by the kernel:
|
|||||||
|
|
||||||
1. User addresses not accessed by the kernel but used for address space
|
1. User addresses not accessed by the kernel but used for address space
|
||||||
management (e.g. ``mprotect()``, ``madvise()``). The use of valid
|
management (e.g. ``mprotect()``, ``madvise()``). The use of valid
|
||||||
tagged pointers in this context is allowed with the exception of
|
tagged pointers in this context is allowed with these exceptions:
|
||||||
``brk()``, ``mmap()`` and the ``new_address`` argument to
|
|
||||||
``mremap()`` as these have the potential to alias with existing
|
|
||||||
user addresses.
|
|
||||||
|
|
||||||
NOTE: This behaviour changed in v5.6 and so some earlier kernels may
|
- ``brk()``, ``mmap()`` and the ``new_address`` argument to
|
||||||
incorrectly accept valid tagged pointers for the ``brk()``,
|
``mremap()`` as these have the potential to alias with existing
|
||||||
``mmap()`` and ``mremap()`` system calls.
|
user addresses.
|
||||||
|
|
||||||
|
NOTE: This behaviour changed in v5.6 and so some earlier kernels may
|
||||||
|
incorrectly accept valid tagged pointers for the ``brk()``,
|
||||||
|
``mmap()`` and ``mremap()`` system calls.
|
||||||
|
|
||||||
|
- The ``range.start``, ``start`` and ``dst`` arguments to the
|
||||||
|
``UFFDIO_*`` ``ioctl()``s used on a file descriptor obtained from
|
||||||
|
``userfaultfd()``, as fault addresses subsequently obtained by reading
|
||||||
|
the file descriptor will be untagged, which may otherwise confuse
|
||||||
|
tag-unaware programs.
|
||||||
|
|
||||||
|
NOTE: This behaviour changed in v5.14 and so some earlier kernels may
|
||||||
|
incorrectly accept valid tagged pointers for this system call.
|
||||||
|
|
||||||
2. User addresses accessed by the kernel (e.g. ``write()``). This ABI
|
2. User addresses accessed by the kernel (e.g. ``write()``). This ABI
|
||||||
relaxation is disabled by default and the application thread needs to
|
relaxation is disabled by default and the application thread needs to
|
||||||
|
@ -191,7 +191,7 @@ Documentation written by Tom Zanussi
|
|||||||
with the event, in nanoseconds. May be
|
with the event, in nanoseconds. May be
|
||||||
modified by .usecs to have timestamps
|
modified by .usecs to have timestamps
|
||||||
interpreted as microseconds.
|
interpreted as microseconds.
|
||||||
cpu int the cpu on which the event occurred.
|
common_cpu int the cpu on which the event occurred.
|
||||||
====================== ==== =======================================
|
====================== ==== =======================================
|
||||||
|
|
||||||
Extended error information
|
Extended error information
|
||||||
|
@ -152,8 +152,8 @@ Shadow pages contain the following information:
|
|||||||
shadow pages) so role.quadrant takes values in the range 0..3. Each
|
shadow pages) so role.quadrant takes values in the range 0..3. Each
|
||||||
quadrant maps 1GB virtual address space.
|
quadrant maps 1GB virtual address space.
|
||||||
role.access:
|
role.access:
|
||||||
Inherited guest access permissions in the form uwx. Note execute
|
Inherited guest access permissions from the parent ptes in the form uwx.
|
||||||
permission is positive, not negative.
|
Note execute permission is positive, not negative.
|
||||||
role.invalid:
|
role.invalid:
|
||||||
The page is invalid and should not be used. It is a root page that is
|
The page is invalid and should not be used. It is a root page that is
|
||||||
currently pinned (by a cpu hardware register pointing to it); once it is
|
currently pinned (by a cpu hardware register pointing to it); once it is
|
||||||
|
2
Makefile
2
Makefile
@ -1,7 +1,7 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0
|
# SPDX-License-Identifier: GPL-2.0
|
||||||
VERSION = 5
|
VERSION = 5
|
||||||
PATCHLEVEL = 4
|
PATCHLEVEL = 4
|
||||||
SUBLEVEL = 134
|
SUBLEVEL = 147
|
||||||
EXTRAVERSION =
|
EXTRAVERSION =
|
||||||
NAME = Kleptomaniac Octopus
|
NAME = Kleptomaniac Octopus
|
||||||
|
|
||||||
|
@ -1 +1 @@
|
|||||||
LTS_5.4.134_2385b6cc59cf
|
LTS_5.4.147_dc8c919ca616
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1384,6 +1384,7 @@
|
|||||||
sdhci_remove_host
|
sdhci_remove_host
|
||||||
sdhci_reset
|
sdhci_reset
|
||||||
sdhci_set_bus_width
|
sdhci_set_bus_width
|
||||||
|
__sdhci_set_timeout
|
||||||
|
|
||||||
# required by smem.ko
|
# required by smem.ko
|
||||||
hwspin_lock_free
|
hwspin_lock_free
|
||||||
|
File diff suppressed because it is too large
Load Diff
11
android/abi_gki_aarch64_fcnt
Normal file → Executable file
11
android/abi_gki_aarch64_fcnt
Normal file → Executable file
@ -4,7 +4,7 @@
|
|||||||
sync_blockdev
|
sync_blockdev
|
||||||
read_cache_page
|
read_cache_page
|
||||||
blkdev_put
|
blkdev_put
|
||||||
blkdev_get_by_dev
|
blkdev_get_by_path
|
||||||
|
|
||||||
# required by pt.ko
|
# required by pt.ko
|
||||||
input_mt_sync_frame
|
input_mt_sync_frame
|
||||||
@ -69,3 +69,12 @@
|
|||||||
|
|
||||||
# required by chipone-ts.ko
|
# required by chipone-ts.ko
|
||||||
input_mt_sync_frame
|
input_mt_sync_frame
|
||||||
|
|
||||||
|
# required by hardware_info.ko
|
||||||
|
simple_strtoull
|
||||||
|
|
||||||
|
# required by spidev.ko
|
||||||
|
stream_open
|
||||||
|
|
||||||
|
# required by sdhci-msm.ko
|
||||||
|
mmc_gpio_set_cd_wake
|
||||||
|
@ -1975,6 +1975,7 @@
|
|||||||
regulator_unlock
|
regulator_unlock
|
||||||
regulator_unregister_notifier
|
regulator_unregister_notifier
|
||||||
regulatory_hint
|
regulatory_hint
|
||||||
|
regulatory_set_wiphy_regd_sync_rtnl
|
||||||
release_firmware
|
release_firmware
|
||||||
release_sock
|
release_sock
|
||||||
regmap_mmio_detach_clk
|
regmap_mmio_detach_clk
|
||||||
|
@ -51,6 +51,7 @@
|
|||||||
regulator_set_voltage
|
regulator_set_voltage
|
||||||
remove_proc_entry
|
remove_proc_entry
|
||||||
schedule_timeout
|
schedule_timeout
|
||||||
|
sdio_writeb_readb
|
||||||
seq_printf
|
seq_printf
|
||||||
seq_read
|
seq_read
|
||||||
simple_open
|
simple_open
|
||||||
|
@ -431,6 +431,7 @@
|
|||||||
devm_kmemdup
|
devm_kmemdup
|
||||||
devm_kstrdup
|
devm_kstrdup
|
||||||
devm_led_classdev_register_ext
|
devm_led_classdev_register_ext
|
||||||
|
devm_mbox_controller_register
|
||||||
devm_nvmem_cell_get
|
devm_nvmem_cell_get
|
||||||
devm_nvmem_device_get
|
devm_nvmem_device_get
|
||||||
devm_nvmem_register
|
devm_nvmem_register
|
||||||
@ -2119,6 +2120,7 @@
|
|||||||
scsi_unblock_requests
|
scsi_unblock_requests
|
||||||
sdev_prefix_printk
|
sdev_prefix_printk
|
||||||
__sdhci_add_host
|
__sdhci_add_host
|
||||||
|
__sdhci_set_timeout
|
||||||
sdhci_add_host
|
sdhci_add_host
|
||||||
sdhci_cleanup_host
|
sdhci_cleanup_host
|
||||||
sdhci_cqe_disable
|
sdhci_cqe_disable
|
||||||
|
@ -585,7 +585,7 @@ void
|
|||||||
smp_send_stop(void)
|
smp_send_stop(void)
|
||||||
{
|
{
|
||||||
cpumask_t to_whom;
|
cpumask_t to_whom;
|
||||||
cpumask_copy(&to_whom, cpu_possible_mask);
|
cpumask_copy(&to_whom, cpu_online_mask);
|
||||||
cpumask_clear_cpu(smp_processor_id(), &to_whom);
|
cpumask_clear_cpu(smp_processor_id(), &to_whom);
|
||||||
#ifdef DEBUG_IPI_MSG
|
#ifdef DEBUG_IPI_MSG
|
||||||
if (hard_smp_processor_id() != boot_cpu_id)
|
if (hard_smp_processor_id() != boot_cpu_id)
|
||||||
|
@ -29,6 +29,7 @@ config ARC
|
|||||||
select GENERIC_SMP_IDLE_THREAD
|
select GENERIC_SMP_IDLE_THREAD
|
||||||
select HAVE_ARCH_KGDB
|
select HAVE_ARCH_KGDB
|
||||||
select HAVE_ARCH_TRACEHOOK
|
select HAVE_ARCH_TRACEHOOK
|
||||||
|
select HAVE_COPY_THREAD_TLS
|
||||||
select HAVE_DEBUG_STACKOVERFLOW
|
select HAVE_DEBUG_STACKOVERFLOW
|
||||||
select HAVE_FUTEX_CMPXCHG if FUTEX
|
select HAVE_FUTEX_CMPXCHG if FUTEX
|
||||||
select HAVE_IOREMAP_PROT
|
select HAVE_IOREMAP_PROT
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
|
|
||||||
int sys_clone_wrapper(int, int, int, int, int);
|
int sys_clone_wrapper(int, int, int, int, int);
|
||||||
|
int sys_clone3_wrapper(void *, size_t);
|
||||||
int sys_cacheflush(uint32_t, uint32_t uint32_t);
|
int sys_cacheflush(uint32_t, uint32_t uint32_t);
|
||||||
int sys_arc_settls(void *);
|
int sys_arc_settls(void *);
|
||||||
int sys_arc_gettls(void);
|
int sys_arc_gettls(void);
|
||||||
|
@ -21,6 +21,7 @@
|
|||||||
#define __ARCH_WANT_SET_GET_RLIMIT
|
#define __ARCH_WANT_SET_GET_RLIMIT
|
||||||
#define __ARCH_WANT_SYS_EXECVE
|
#define __ARCH_WANT_SYS_EXECVE
|
||||||
#define __ARCH_WANT_SYS_CLONE
|
#define __ARCH_WANT_SYS_CLONE
|
||||||
|
#define __ARCH_WANT_SYS_CLONE3
|
||||||
#define __ARCH_WANT_SYS_VFORK
|
#define __ARCH_WANT_SYS_VFORK
|
||||||
#define __ARCH_WANT_SYS_FORK
|
#define __ARCH_WANT_SYS_FORK
|
||||||
#define __ARCH_WANT_TIME32_SYSCALLS
|
#define __ARCH_WANT_TIME32_SYSCALLS
|
||||||
|
@ -35,6 +35,18 @@ ENTRY(sys_clone_wrapper)
|
|||||||
b .Lret_from_system_call
|
b .Lret_from_system_call
|
||||||
END(sys_clone_wrapper)
|
END(sys_clone_wrapper)
|
||||||
|
|
||||||
|
ENTRY(sys_clone3_wrapper)
|
||||||
|
SAVE_CALLEE_SAVED_USER
|
||||||
|
bl @sys_clone3
|
||||||
|
DISCARD_CALLEE_SAVED_USER
|
||||||
|
|
||||||
|
GET_CURR_THR_INFO_FLAGS r10
|
||||||
|
btst r10, TIF_SYSCALL_TRACE
|
||||||
|
bnz tracesys_exit
|
||||||
|
|
||||||
|
b .Lret_from_system_call
|
||||||
|
END(sys_clone3_wrapper)
|
||||||
|
|
||||||
ENTRY(ret_from_fork)
|
ENTRY(ret_from_fork)
|
||||||
; when the forked child comes here from the __switch_to function
|
; when the forked child comes here from the __switch_to function
|
||||||
; r0 has the last task pointer.
|
; r0 has the last task pointer.
|
||||||
|
@ -171,9 +171,8 @@ asmlinkage void ret_from_fork(void);
|
|||||||
* | user_r25 |
|
* | user_r25 |
|
||||||
* ------------------ <===== END of PAGE
|
* ------------------ <===== END of PAGE
|
||||||
*/
|
*/
|
||||||
int copy_thread(unsigned long clone_flags,
|
int copy_thread_tls(unsigned long clone_flags, unsigned long usp,
|
||||||
unsigned long usp, unsigned long kthread_arg,
|
unsigned long kthread_arg, struct task_struct *p, unsigned long tls)
|
||||||
struct task_struct *p)
|
|
||||||
{
|
{
|
||||||
struct pt_regs *c_regs; /* child's pt_regs */
|
struct pt_regs *c_regs; /* child's pt_regs */
|
||||||
unsigned long *childksp; /* to unwind out of __switch_to() */
|
unsigned long *childksp; /* to unwind out of __switch_to() */
|
||||||
@ -231,7 +230,7 @@ int copy_thread(unsigned long clone_flags,
|
|||||||
* set task's userland tls data ptr from 4th arg
|
* set task's userland tls data ptr from 4th arg
|
||||||
* clone C-lib call is difft from clone sys-call
|
* clone C-lib call is difft from clone sys-call
|
||||||
*/
|
*/
|
||||||
task_thread_info(p)->thr_ptr = regs->r3;
|
task_thread_info(p)->thr_ptr = tls;
|
||||||
} else {
|
} else {
|
||||||
/* Normal fork case: set parent's TLS ptr in child */
|
/* Normal fork case: set parent's TLS ptr in child */
|
||||||
task_thread_info(p)->thr_ptr =
|
task_thread_info(p)->thr_ptr =
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
#include <asm/syscalls.h>
|
#include <asm/syscalls.h>
|
||||||
|
|
||||||
#define sys_clone sys_clone_wrapper
|
#define sys_clone sys_clone_wrapper
|
||||||
|
#define sys_clone3 sys_clone3_wrapper
|
||||||
|
|
||||||
#undef __SYSCALL
|
#undef __SYSCALL
|
||||||
#define __SYSCALL(nr, call) [nr] = (call),
|
#define __SYSCALL(nr, call) [nr] = (call),
|
||||||
|
@ -88,6 +88,8 @@ SECTIONS
|
|||||||
CPUIDLE_TEXT
|
CPUIDLE_TEXT
|
||||||
LOCK_TEXT
|
LOCK_TEXT
|
||||||
KPROBES_TEXT
|
KPROBES_TEXT
|
||||||
|
IRQENTRY_TEXT
|
||||||
|
SOFTIRQENTRY_TEXT
|
||||||
*(.fixup)
|
*(.fixup)
|
||||||
*(.gnu.warning)
|
*(.gnu.warning)
|
||||||
}
|
}
|
||||||
|
@ -829,11 +829,14 @@
|
|||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&gpio5_target {
|
||||||
|
ti,no-reset-on-init;
|
||||||
|
};
|
||||||
|
|
||||||
&gpio5 {
|
&gpio5 {
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&display_mux_pins>;
|
pinctrl-0 = <&display_mux_pins>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
ti,no-reset-on-init;
|
|
||||||
|
|
||||||
p8 {
|
p8 {
|
||||||
/*
|
/*
|
||||||
|
@ -1611,7 +1611,7 @@
|
|||||||
compatible = "ti,am4372-d_can", "ti,am3352-d_can";
|
compatible = "ti,am4372-d_can", "ti,am3352-d_can";
|
||||||
reg = <0x0 0x2000>;
|
reg = <0x0 0x2000>;
|
||||||
clocks = <&dcan1_fck>;
|
clocks = <&dcan1_fck>;
|
||||||
clock-name = "fck";
|
clock-names = "fck";
|
||||||
syscon-raminit = <&scm_conf 0x644 1>;
|
syscon-raminit = <&scm_conf 0x644 1>;
|
||||||
interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
@ -2077,7 +2077,7 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
target-module@22000 { /* 0x48322000, ap 116 64.0 */
|
gpio5_target: target-module@22000 { /* 0x48322000, ap 116 64.0 */
|
||||||
compatible = "ti,sysc-omap2", "ti,sysc";
|
compatible = "ti,sysc-omap2", "ti,sysc";
|
||||||
ti,hwmods = "gpio6";
|
ti,hwmods = "gpio6";
|
||||||
reg = <0x22000 0x4>,
|
reg = <0x22000 0x4>,
|
||||||
|
@ -589,7 +589,7 @@
|
|||||||
status = "okay";
|
status = "okay";
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&i2c0_pins>;
|
pinctrl-0 = <&i2c0_pins>;
|
||||||
clock-frequency = <400000>;
|
clock-frequency = <100000>;
|
||||||
|
|
||||||
tps65218: tps65218@24 {
|
tps65218: tps65218@24 {
|
||||||
reg = <0x24>;
|
reg = <0x24>;
|
||||||
|
@ -611,12 +611,11 @@
|
|||||||
>;
|
>;
|
||||||
};
|
};
|
||||||
|
|
||||||
&gpio3 {
|
&gpio3_target {
|
||||||
status = "okay";
|
|
||||||
ti,no-reset-on-init;
|
ti,no-reset-on-init;
|
||||||
};
|
};
|
||||||
|
|
||||||
&gpio2 {
|
&gpio2_target {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
ti,no-reset-on-init;
|
ti,no-reset-on-init;
|
||||||
};
|
};
|
||||||
|
@ -208,12 +208,12 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
pinctrl_hvi3c3_default: hvi3c3_default {
|
pinctrl_hvi3c3_default: hvi3c3_default {
|
||||||
function = "HVI3C3";
|
function = "I3C3";
|
||||||
groups = "HVI3C3";
|
groups = "HVI3C3";
|
||||||
};
|
};
|
||||||
|
|
||||||
pinctrl_hvi3c4_default: hvi3c4_default {
|
pinctrl_hvi3c4_default: hvi3c4_default {
|
||||||
function = "HVI3C4";
|
function = "I3C4";
|
||||||
groups = "HVI3C4";
|
groups = "HVI3C4";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -460,7 +460,7 @@
|
|||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
nand: nand@18046000 {
|
nand_controller: nand-controller@18046000 {
|
||||||
compatible = "brcm,nand-iproc", "brcm,brcmnand-v6.1";
|
compatible = "brcm,nand-iproc", "brcm,brcmnand-v6.1";
|
||||||
reg = <0x18046000 0x600>, <0xf8105408 0x600>,
|
reg = <0x18046000 0x600>, <0xf8105408 0x600>,
|
||||||
<0x18046f00 0x20>;
|
<0x18046f00 0x20>;
|
||||||
|
@ -179,7 +179,7 @@
|
|||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
nand: nand@26000 {
|
nand_controller: nand-controller@26000 {
|
||||||
compatible = "brcm,nand-iproc", "brcm,brcmnand-v6.1";
|
compatible = "brcm,nand-iproc", "brcm,brcmnand-v6.1";
|
||||||
reg = <0x26000 0x600>,
|
reg = <0x26000 0x600>,
|
||||||
<0x11b408 0x600>,
|
<0x11b408 0x600>,
|
||||||
|
@ -267,7 +267,7 @@
|
|||||||
dma-coherent;
|
dma-coherent;
|
||||||
};
|
};
|
||||||
|
|
||||||
nand: nand@26000 {
|
nand_controller: nand-controller@26000 {
|
||||||
compatible = "brcm,nand-iproc", "brcm,brcmnand-v6.1";
|
compatible = "brcm,nand-iproc", "brcm,brcmnand-v6.1";
|
||||||
reg = <0x026000 0x600>,
|
reg = <0x026000 0x600>,
|
||||||
<0x11b408 0x600>,
|
<0x11b408 0x600>,
|
||||||
|
@ -203,7 +203,7 @@
|
|||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
nand: nand@2000 {
|
nand_controller: nand-controller@2000 {
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
compatible = "brcm,nand-bcm63138", "brcm,brcmnand-v7.0", "brcm,brcmnand";
|
compatible = "brcm,nand-bcm63138", "brcm,brcmnand-v7.0", "brcm,brcmnand";
|
||||||
|
@ -14,10 +14,10 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
&nand {
|
&nand_controller {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
||||||
nandcs@1 {
|
nand@1 {
|
||||||
compatible = "brcm,nandcs";
|
compatible = "brcm,nandcs";
|
||||||
reg = <1>;
|
reg = <1>;
|
||||||
nand-ecc-step-size = <512>;
|
nand-ecc-step-size = <512>;
|
||||||
|
@ -148,7 +148,7 @@
|
|||||||
reg-names = "aon-ctrl", "aon-sram";
|
reg-names = "aon-ctrl", "aon-sram";
|
||||||
};
|
};
|
||||||
|
|
||||||
nand: nand@3e2800 {
|
nand_controller: nand-controller@3e2800 {
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
|
@ -82,8 +82,8 @@
|
|||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
&nand {
|
&nand_controller {
|
||||||
nandcs@1 {
|
nand@1 {
|
||||||
compatible = "brcm,nandcs";
|
compatible = "brcm,nandcs";
|
||||||
reg = <0>;
|
reg = <0>;
|
||||||
nand-on-flash-bbt;
|
nand-on-flash-bbt;
|
||||||
|
@ -60,8 +60,8 @@
|
|||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
&nand {
|
&nand_controller {
|
||||||
nandcs@1 {
|
nand@1 {
|
||||||
compatible = "brcm,nandcs";
|
compatible = "brcm,nandcs";
|
||||||
reg = <0>;
|
reg = <0>;
|
||||||
nand-on-flash-bbt;
|
nand-on-flash-bbt;
|
||||||
|
@ -68,8 +68,8 @@
|
|||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
&nand {
|
&nand_controller {
|
||||||
nandcs@1 {
|
nand@1 {
|
||||||
compatible = "brcm,nandcs";
|
compatible = "brcm,nandcs";
|
||||||
reg = <0>;
|
reg = <0>;
|
||||||
nand-on-flash-bbt;
|
nand-on-flash-bbt;
|
||||||
|
@ -70,8 +70,8 @@
|
|||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
&nand {
|
&nand_controller {
|
||||||
nandcs@0 {
|
nand@0 {
|
||||||
compatible = "brcm,nandcs";
|
compatible = "brcm,nandcs";
|
||||||
reg = <0>;
|
reg = <0>;
|
||||||
nand-on-flash-bbt;
|
nand-on-flash-bbt;
|
||||||
|
@ -70,8 +70,8 @@
|
|||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
&nand {
|
&nand_controller {
|
||||||
nandcs@0 {
|
nand@0 {
|
||||||
compatible = "brcm,nandcs";
|
compatible = "brcm,nandcs";
|
||||||
reg = <0>;
|
reg = <0>;
|
||||||
nand-on-flash-bbt;
|
nand-on-flash-bbt;
|
||||||
|
@ -86,8 +86,8 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
&nand {
|
&nand_controller {
|
||||||
nandcs@0 {
|
nand@0 {
|
||||||
compatible = "brcm,nandcs";
|
compatible = "brcm,nandcs";
|
||||||
reg = <0>;
|
reg = <0>;
|
||||||
nand-on-flash-bbt;
|
nand-on-flash-bbt;
|
||||||
|
@ -74,8 +74,8 @@
|
|||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
&nand {
|
&nand_controller {
|
||||||
nandcs@0 {
|
nand@0 {
|
||||||
compatible = "brcm,nandcs";
|
compatible = "brcm,nandcs";
|
||||||
reg = <0>;
|
reg = <0>;
|
||||||
nand-on-flash-bbt;
|
nand-on-flash-bbt;
|
||||||
|
@ -74,8 +74,8 @@
|
|||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
&nand {
|
&nand_controller {
|
||||||
nandcs@0 {
|
nand@0 {
|
||||||
compatible = "brcm,nandcs";
|
compatible = "brcm,nandcs";
|
||||||
reg = <0>;
|
reg = <0>;
|
||||||
nand-on-flash-bbt;
|
nand-on-flash-bbt;
|
||||||
|
@ -90,8 +90,8 @@
|
|||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
&nand {
|
&nand_controller {
|
||||||
nandcs@0 {
|
nand@0 {
|
||||||
compatible = "brcm,nandcs";
|
compatible = "brcm,nandcs";
|
||||||
reg = <0>;
|
reg = <0>;
|
||||||
nand-on-flash-bbt;
|
nand-on-flash-bbt;
|
||||||
|
@ -64,8 +64,8 @@
|
|||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
&nand {
|
&nand_controller {
|
||||||
nandcs@0 {
|
nand@0 {
|
||||||
compatible = "brcm,nandcs";
|
compatible = "brcm,nandcs";
|
||||||
reg = <0>;
|
reg = <0>;
|
||||||
nand-on-flash-bbt;
|
nand-on-flash-bbt;
|
||||||
|
@ -31,10 +31,10 @@
|
|||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
&nand {
|
&nand_controller {
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
||||||
nandcs@0 {
|
nand@0 {
|
||||||
compatible = "brcm,nandcs";
|
compatible = "brcm,nandcs";
|
||||||
reg = <0>;
|
reg = <0>;
|
||||||
nand-ecc-strength = <4>;
|
nand-ecc-strength = <4>;
|
||||||
|
@ -74,8 +74,8 @@
|
|||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
|
||||||
&nand {
|
&nand_controller {
|
||||||
nandcs@0 {
|
nand@0 {
|
||||||
compatible = "brcm,nandcs";
|
compatible = "brcm,nandcs";
|
||||||
reg = <0>;
|
reg = <0>;
|
||||||
nand-on-flash-bbt;
|
nand-on-flash-bbt;
|
||||||
|
@ -1326,7 +1326,7 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
target-module@55000 { /* 0x48055000, ap 13 0e.0 */
|
gpio2_target: target-module@55000 { /* 0x48055000, ap 13 0e.0 */
|
||||||
compatible = "ti,sysc-omap2", "ti,sysc";
|
compatible = "ti,sysc-omap2", "ti,sysc";
|
||||||
reg = <0x55000 0x4>,
|
reg = <0x55000 0x4>,
|
||||||
<0x55010 0x4>,
|
<0x55010 0x4>,
|
||||||
@ -1359,7 +1359,7 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
target-module@57000 { /* 0x48057000, ap 15 06.0 */
|
gpio3_target: target-module@57000 { /* 0x48057000, ap 15 06.0 */
|
||||||
compatible = "ti,sysc-omap2", "ti,sysc";
|
compatible = "ti,sysc-omap2", "ti,sysc";
|
||||||
reg = <0x57000 0x4>,
|
reg = <0x57000 0x4>,
|
||||||
<0x57010 0x4>,
|
<0x57010 0x4>,
|
||||||
|
@ -140,7 +140,7 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
mdio0: ethernet-phy {
|
mdio0: mdio {
|
||||||
compatible = "virtual,mdio-gpio";
|
compatible = "virtual,mdio-gpio";
|
||||||
/* Uses MDC and MDIO */
|
/* Uses MDC and MDIO */
|
||||||
gpios = <&gpio0 22 GPIO_ACTIVE_HIGH>, /* MDC */
|
gpios = <&gpio0 22 GPIO_ACTIVE_HIGH>, /* MDC */
|
||||||
|
@ -62,7 +62,7 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
mdio0: ethernet-phy {
|
mdio0: mdio {
|
||||||
compatible = "virtual,mdio-gpio";
|
compatible = "virtual,mdio-gpio";
|
||||||
gpios = <&gpio0 22 GPIO_ACTIVE_HIGH>, /* MDC */
|
gpios = <&gpio0 22 GPIO_ACTIVE_HIGH>, /* MDC */
|
||||||
<&gpio0 21 GPIO_ACTIVE_HIGH>; /* MDIO */
|
<&gpio0 21 GPIO_ACTIVE_HIGH>; /* MDIO */
|
||||||
|
@ -56,7 +56,7 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
mdio0: ethernet-phy {
|
mdio0: mdio {
|
||||||
compatible = "virtual,mdio-gpio";
|
compatible = "virtual,mdio-gpio";
|
||||||
gpios = <&gpio0 22 GPIO_ACTIVE_HIGH>, /* MDC */
|
gpios = <&gpio0 22 GPIO_ACTIVE_HIGH>, /* MDC */
|
||||||
<&gpio0 21 GPIO_ACTIVE_HIGH>; /* MDIO */
|
<&gpio0 21 GPIO_ACTIVE_HIGH>; /* MDIO */
|
||||||
|
@ -68,7 +68,7 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
mdio0: ethernet-phy {
|
mdio0: mdio {
|
||||||
compatible = "virtual,mdio-gpio";
|
compatible = "virtual,mdio-gpio";
|
||||||
gpios = <&gpio0 22 GPIO_ACTIVE_HIGH>, /* MDC */
|
gpios = <&gpio0 22 GPIO_ACTIVE_HIGH>, /* MDC */
|
||||||
<&gpio0 21 GPIO_ACTIVE_HIGH>; /* MDIO */
|
<&gpio0 21 GPIO_ACTIVE_HIGH>; /* MDIO */
|
||||||
|
@ -67,7 +67,7 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
mdio0: ethernet-phy {
|
mdio0: mdio {
|
||||||
compatible = "virtual,mdio-gpio";
|
compatible = "virtual,mdio-gpio";
|
||||||
gpios = <&gpio0 22 GPIO_ACTIVE_HIGH>, /* MDC */
|
gpios = <&gpio0 22 GPIO_ACTIVE_HIGH>, /* MDC */
|
||||||
<&gpio0 21 GPIO_ACTIVE_HIGH>; /* MDIO */
|
<&gpio0 21 GPIO_ACTIVE_HIGH>; /* MDIO */
|
||||||
|
@ -286,6 +286,7 @@
|
|||||||
clock-names = "PCLK", "PCICLK";
|
clock-names = "PCLK", "PCICLK";
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pci_default_pins>;
|
pinctrl-0 = <&pci_default_pins>;
|
||||||
|
device_type = "pci";
|
||||||
#address-cells = <3>;
|
#address-cells = <3>;
|
||||||
#size-cells = <2>;
|
#size-cells = <2>;
|
||||||
#interrupt-cells = <1>;
|
#interrupt-cells = <1>;
|
||||||
|
@ -388,13 +388,13 @@
|
|||||||
|
|
||||||
pinctrl_power_button: powerbutgrp {
|
pinctrl_power_button: powerbutgrp {
|
||||||
fsl,pins = <
|
fsl,pins = <
|
||||||
MX53_PAD_SD2_DATA2__GPIO1_13 0x1e4
|
MX53_PAD_SD2_DATA0__GPIO1_15 0x1e4
|
||||||
>;
|
>;
|
||||||
};
|
};
|
||||||
|
|
||||||
pinctrl_power_out: poweroutgrp {
|
pinctrl_power_out: poweroutgrp {
|
||||||
fsl,pins = <
|
fsl,pins = <
|
||||||
MX53_PAD_SD2_DATA0__GPIO1_15 0x1e4
|
MX53_PAD_SD2_DATA2__GPIO1_13 0x1e4
|
||||||
>;
|
>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -315,8 +315,8 @@
|
|||||||
fsl,pins = <
|
fsl,pins = <
|
||||||
MX6QDL_PAD_EIM_D24__UART3_TX_DATA 0x1b0b1
|
MX6QDL_PAD_EIM_D24__UART3_TX_DATA 0x1b0b1
|
||||||
MX6QDL_PAD_EIM_D25__UART3_RX_DATA 0x1b0b1
|
MX6QDL_PAD_EIM_D25__UART3_RX_DATA 0x1b0b1
|
||||||
MX6QDL_PAD_EIM_D30__UART3_RTS_B 0x1b0b1
|
MX6QDL_PAD_EIM_D31__UART3_RTS_B 0x1b0b1
|
||||||
MX6QDL_PAD_EIM_D31__UART3_CTS_B 0x1b0b1
|
MX6QDL_PAD_EIM_D30__UART3_CTS_B 0x1b0b1
|
||||||
>;
|
>;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -403,6 +403,7 @@
|
|||||||
&uart3 {
|
&uart3 {
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_uart3>;
|
pinctrl-0 = <&pinctrl_uart3>;
|
||||||
|
uart-has-rtscts;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -54,7 +54,13 @@
|
|||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&pinctrl_microsom_enet_ar8035>;
|
pinctrl-0 = <&pinctrl_microsom_enet_ar8035>;
|
||||||
phy-mode = "rgmii-id";
|
phy-mode = "rgmii-id";
|
||||||
phy-reset-duration = <2>;
|
|
||||||
|
/*
|
||||||
|
* The PHY seems to require a long-enough reset duration to avoid
|
||||||
|
* some rare issues where the PHY gets stuck in an inconsistent and
|
||||||
|
* non-functional state at boot-up. 10ms proved to be fine .
|
||||||
|
*/
|
||||||
|
phy-reset-duration = <10>;
|
||||||
phy-reset-gpios = <&gpio4 15 GPIO_ACTIVE_LOW>;
|
phy-reset-gpios = <&gpio4 15 GPIO_ACTIVE_LOW>;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
};
|
};
|
||||||
|
@ -43,6 +43,7 @@
|
|||||||
assigned-clock-rates = <0>, <198000000>;
|
assigned-clock-rates = <0>, <198000000>;
|
||||||
cap-power-off-card;
|
cap-power-off-card;
|
||||||
keep-power-in-suspend;
|
keep-power-in-suspend;
|
||||||
|
max-frequency = <25000000>;
|
||||||
mmc-pwrseq = <&wifi_pwrseq>;
|
mmc-pwrseq = <&wifi_pwrseq>;
|
||||||
no-1-8-v;
|
no-1-8-v;
|
||||||
non-removable;
|
non-removable;
|
||||||
|
@ -241,8 +241,13 @@
|
|||||||
"pp2", "ppmmu2", "pp4", "ppmmu4",
|
"pp2", "ppmmu2", "pp4", "ppmmu4",
|
||||||
"pp5", "ppmmu5", "pp6", "ppmmu6";
|
"pp5", "ppmmu5", "pp6", "ppmmu6";
|
||||||
resets = <&reset RESET_MALI>;
|
resets = <&reset RESET_MALI>;
|
||||||
|
|
||||||
clocks = <&clkc CLKID_CLK81>, <&clkc CLKID_MALI>;
|
clocks = <&clkc CLKID_CLK81>, <&clkc CLKID_MALI>;
|
||||||
clock-names = "bus", "core";
|
clock-names = "bus", "core";
|
||||||
|
|
||||||
|
assigned-clocks = <&clkc CLKID_MALI>;
|
||||||
|
assigned-clock-rates = <318750000>;
|
||||||
|
|
||||||
operating-points-v2 = <&gpu_opp_table>;
|
operating-points-v2 = <&gpu_opp_table>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -148,7 +148,7 @@
|
|||||||
regulator-min-microvolt = <860000>;
|
regulator-min-microvolt = <860000>;
|
||||||
regulator-max-microvolt = <1140000>;
|
regulator-max-microvolt = <1140000>;
|
||||||
|
|
||||||
vin-supply = <&vcc_5v>;
|
pwm-supply = <&vcc_5v>;
|
||||||
|
|
||||||
pwms = <&pwm_cd 0 1148 0>;
|
pwms = <&pwm_cd 0 1148 0>;
|
||||||
pwm-dutycycle-range = <100 0>;
|
pwm-dutycycle-range = <100 0>;
|
||||||
@ -232,7 +232,7 @@
|
|||||||
regulator-min-microvolt = <860000>;
|
regulator-min-microvolt = <860000>;
|
||||||
regulator-max-microvolt = <1140000>;
|
regulator-max-microvolt = <1140000>;
|
||||||
|
|
||||||
vin-supply = <&vcc_5v>;
|
pwm-supply = <&vcc_5v>;
|
||||||
|
|
||||||
pwms = <&pwm_cd 1 1148 0>;
|
pwms = <&pwm_cd 1 1148 0>;
|
||||||
pwm-dutycycle-range = <100 0>;
|
pwm-dutycycle-range = <100 0>;
|
||||||
|
@ -39,6 +39,8 @@
|
|||||||
regulator-min-microvolt = <860000>;
|
regulator-min-microvolt = <860000>;
|
||||||
regulator-max-microvolt = <1140000>;
|
regulator-max-microvolt = <1140000>;
|
||||||
|
|
||||||
|
pwm-supply = <&vcc_5v>;
|
||||||
|
|
||||||
pwms = <&pwm_cd 0 1148 0>;
|
pwms = <&pwm_cd 0 1148 0>;
|
||||||
pwm-dutycycle-range = <100 0>;
|
pwm-dutycycle-range = <100 0>;
|
||||||
|
|
||||||
@ -84,7 +86,7 @@
|
|||||||
regulator-min-microvolt = <860000>;
|
regulator-min-microvolt = <860000>;
|
||||||
regulator-max-microvolt = <1140000>;
|
regulator-max-microvolt = <1140000>;
|
||||||
|
|
||||||
vin-supply = <&vcc_5v>;
|
pwm-supply = <&vcc_5v>;
|
||||||
|
|
||||||
pwms = <&pwm_cd 1 1148 0>;
|
pwms = <&pwm_cd 1 1148 0>;
|
||||||
pwm-dutycycle-range = <100 0>;
|
pwm-dutycycle-range = <100 0>;
|
||||||
|
@ -130,7 +130,7 @@
|
|||||||
regulator-min-microvolt = <860000>;
|
regulator-min-microvolt = <860000>;
|
||||||
regulator-max-microvolt = <1140000>;
|
regulator-max-microvolt = <1140000>;
|
||||||
|
|
||||||
vin-supply = <&p5v0>;
|
pwm-supply = <&p5v0>;
|
||||||
|
|
||||||
pwms = <&pwm_cd 0 12218 0>;
|
pwms = <&pwm_cd 0 12218 0>;
|
||||||
pwm-dutycycle-range = <91 0>;
|
pwm-dutycycle-range = <91 0>;
|
||||||
@ -162,7 +162,7 @@
|
|||||||
regulator-min-microvolt = <860000>;
|
regulator-min-microvolt = <860000>;
|
||||||
regulator-max-microvolt = <1140000>;
|
regulator-max-microvolt = <1140000>;
|
||||||
|
|
||||||
vin-supply = <&p5v0>;
|
pwm-supply = <&p5v0>;
|
||||||
|
|
||||||
pwms = <&pwm_cd 1 12218 0>;
|
pwms = <&pwm_cd 1 12218 0>;
|
||||||
pwm-dutycycle-range = <91 0>;
|
pwm-dutycycle-range = <91 0>;
|
||||||
|
@ -30,14 +30,6 @@
|
|||||||
regulator-max-microvolt = <5000000>;
|
regulator-max-microvolt = <5000000>;
|
||||||
};
|
};
|
||||||
|
|
||||||
vdds_1v8_main: fixedregulator-vdds_1v8_main {
|
|
||||||
compatible = "regulator-fixed";
|
|
||||||
regulator-name = "vdds_1v8_main";
|
|
||||||
vin-supply = <&smps7_reg>;
|
|
||||||
regulator-min-microvolt = <1800000>;
|
|
||||||
regulator-max-microvolt = <1800000>;
|
|
||||||
};
|
|
||||||
|
|
||||||
vmmcsd_fixed: fixedregulator-mmcsd {
|
vmmcsd_fixed: fixedregulator-mmcsd {
|
||||||
compatible = "regulator-fixed";
|
compatible = "regulator-fixed";
|
||||||
regulator-name = "vmmcsd_fixed";
|
regulator-name = "vmmcsd_fixed";
|
||||||
@ -487,6 +479,7 @@
|
|||||||
regulator-boot-on;
|
regulator-boot-on;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
vdds_1v8_main:
|
||||||
smps7_reg: smps7 {
|
smps7_reg: smps7 {
|
||||||
/* VDDS_1v8_OMAP over VDDS_1v8_MAIN */
|
/* VDDS_1v8_OMAP over VDDS_1v8_MAIN */
|
||||||
regulator-name = "smps7";
|
regulator-name = "smps7";
|
||||||
|
@ -390,7 +390,7 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
sleep {
|
suspend {
|
||||||
global_pwroff: global-pwroff {
|
global_pwroff: global-pwroff {
|
||||||
rockchip,pins = <2 RK_PA7 1 &pcfg_pull_none>;
|
rockchip,pins = <2 RK_PA7 1 &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
|
@ -761,7 +761,7 @@
|
|||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
|
|
||||||
pd_vio@RK3066_PD_VIO {
|
power-domain@RK3066_PD_VIO {
|
||||||
reg = <RK3066_PD_VIO>;
|
reg = <RK3066_PD_VIO>;
|
||||||
clocks = <&cru ACLK_LCDC0>,
|
clocks = <&cru ACLK_LCDC0>,
|
||||||
<&cru ACLK_LCDC1>,
|
<&cru ACLK_LCDC1>,
|
||||||
@ -788,7 +788,7 @@
|
|||||||
<&qos_rga>;
|
<&qos_rga>;
|
||||||
};
|
};
|
||||||
|
|
||||||
pd_video@RK3066_PD_VIDEO {
|
power-domain@RK3066_PD_VIDEO {
|
||||||
reg = <RK3066_PD_VIDEO>;
|
reg = <RK3066_PD_VIDEO>;
|
||||||
clocks = <&cru ACLK_VDPU>,
|
clocks = <&cru ACLK_VDPU>,
|
||||||
<&cru ACLK_VEPU>,
|
<&cru ACLK_VEPU>,
|
||||||
@ -797,7 +797,7 @@
|
|||||||
pm_qos = <&qos_vpu>;
|
pm_qos = <&qos_vpu>;
|
||||||
};
|
};
|
||||||
|
|
||||||
pd_gpu@RK3066_PD_GPU {
|
power-domain@RK3066_PD_GPU {
|
||||||
reg = <RK3066_PD_GPU>;
|
reg = <RK3066_PD_GPU>;
|
||||||
clocks = <&cru ACLK_GPU>;
|
clocks = <&cru ACLK_GPU>;
|
||||||
pm_qos = <&qos_gpu>;
|
pm_qos = <&qos_gpu>;
|
||||||
|
@ -150,16 +150,16 @@
|
|||||||
compatible = "rockchip,rk3188-timer", "rockchip,rk3288-timer";
|
compatible = "rockchip,rk3188-timer", "rockchip,rk3288-timer";
|
||||||
reg = <0x2000e000 0x20>;
|
reg = <0x2000e000 0x20>;
|
||||||
interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
clocks = <&cru SCLK_TIMER3>, <&cru PCLK_TIMER3>;
|
clocks = <&cru PCLK_TIMER3>, <&cru SCLK_TIMER3>;
|
||||||
clock-names = "timer", "pclk";
|
clock-names = "pclk", "timer";
|
||||||
};
|
};
|
||||||
|
|
||||||
timer6: timer@200380a0 {
|
timer6: timer@200380a0 {
|
||||||
compatible = "rockchip,rk3188-timer", "rockchip,rk3288-timer";
|
compatible = "rockchip,rk3188-timer", "rockchip,rk3288-timer";
|
||||||
reg = <0x200380a0 0x20>;
|
reg = <0x200380a0 0x20>;
|
||||||
interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
clocks = <&cru SCLK_TIMER6>, <&cru PCLK_TIMER0>;
|
clocks = <&cru PCLK_TIMER0>, <&cru SCLK_TIMER6>;
|
||||||
clock-names = "timer", "pclk";
|
clock-names = "pclk", "timer";
|
||||||
};
|
};
|
||||||
|
|
||||||
i2s0: i2s@1011a000 {
|
i2s0: i2s@1011a000 {
|
||||||
@ -701,7 +701,7 @@
|
|||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
|
|
||||||
pd_vio@RK3188_PD_VIO {
|
power-domain@RK3188_PD_VIO {
|
||||||
reg = <RK3188_PD_VIO>;
|
reg = <RK3188_PD_VIO>;
|
||||||
clocks = <&cru ACLK_LCDC0>,
|
clocks = <&cru ACLK_LCDC0>,
|
||||||
<&cru ACLK_LCDC1>,
|
<&cru ACLK_LCDC1>,
|
||||||
@ -723,7 +723,7 @@
|
|||||||
<&qos_rga>;
|
<&qos_rga>;
|
||||||
};
|
};
|
||||||
|
|
||||||
pd_video@RK3188_PD_VIDEO {
|
power-domain@RK3188_PD_VIDEO {
|
||||||
reg = <RK3188_PD_VIDEO>;
|
reg = <RK3188_PD_VIDEO>;
|
||||||
clocks = <&cru ACLK_VDPU>,
|
clocks = <&cru ACLK_VDPU>,
|
||||||
<&cru ACLK_VEPU>,
|
<&cru ACLK_VEPU>,
|
||||||
@ -732,7 +732,7 @@
|
|||||||
pm_qos = <&qos_vpu>;
|
pm_qos = <&qos_vpu>;
|
||||||
};
|
};
|
||||||
|
|
||||||
pd_gpu@RK3188_PD_GPU {
|
power-domain@RK3188_PD_GPU {
|
||||||
reg = <RK3188_PD_GPU>;
|
reg = <RK3188_PD_GPU>;
|
||||||
clocks = <&cru ACLK_GPU>;
|
clocks = <&cru ACLK_GPU>;
|
||||||
pm_qos = <&qos_gpu>;
|
pm_qos = <&qos_gpu>;
|
||||||
|
@ -570,10 +570,9 @@
|
|||||||
compatible = "rockchip,iommu";
|
compatible = "rockchip,iommu";
|
||||||
reg = <0x20020800 0x100>;
|
reg = <0x20020800 0x100>;
|
||||||
interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
interrupt-names = "vpu_mmu";
|
|
||||||
clocks = <&cru ACLK_VPU>, <&cru HCLK_VPU>;
|
clocks = <&cru ACLK_VPU>, <&cru HCLK_VPU>;
|
||||||
clock-names = "aclk", "iface";
|
clock-names = "aclk", "iface";
|
||||||
iommu-cells = <0>;
|
#iommu-cells = <0>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -581,10 +580,9 @@
|
|||||||
compatible = "rockchip,iommu";
|
compatible = "rockchip,iommu";
|
||||||
reg = <0x20030480 0x40>, <0x200304c0 0x40>;
|
reg = <0x20030480 0x40>, <0x200304c0 0x40>;
|
||||||
interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
interrupt-names = "vdec_mmu";
|
|
||||||
clocks = <&cru ACLK_RKVDEC>, <&cru HCLK_RKVDEC>;
|
clocks = <&cru ACLK_RKVDEC>, <&cru HCLK_RKVDEC>;
|
||||||
clock-names = "aclk", "iface";
|
clock-names = "aclk", "iface";
|
||||||
iommu-cells = <0>;
|
#iommu-cells = <0>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -614,7 +612,6 @@
|
|||||||
compatible = "rockchip,iommu";
|
compatible = "rockchip,iommu";
|
||||||
reg = <0x20053f00 0x100>;
|
reg = <0x20053f00 0x100>;
|
||||||
interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
interrupt-names = "vop_mmu";
|
|
||||||
clocks = <&cru ACLK_VOP>, <&cru HCLK_VOP>;
|
clocks = <&cru ACLK_VOP>, <&cru HCLK_VOP>;
|
||||||
clock-names = "aclk", "iface";
|
clock-names = "aclk", "iface";
|
||||||
#iommu-cells = <0>;
|
#iommu-cells = <0>;
|
||||||
@ -625,10 +622,9 @@
|
|||||||
compatible = "rockchip,iommu";
|
compatible = "rockchip,iommu";
|
||||||
reg = <0x20070800 0x100>;
|
reg = <0x20070800 0x100>;
|
||||||
interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
interrupt-names = "iep_mmu";
|
|
||||||
clocks = <&cru ACLK_IEP>, <&cru HCLK_IEP>;
|
clocks = <&cru ACLK_IEP>, <&cru HCLK_IEP>;
|
||||||
clock-names = "aclk", "iface";
|
clock-names = "aclk", "iface";
|
||||||
iommu-cells = <0>;
|
#iommu-cells = <0>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -218,7 +218,7 @@
|
|||||||
flash0-supply = <&vcc_flash>;
|
flash0-supply = <&vcc_flash>;
|
||||||
flash1-supply = <&vccio_pmu>;
|
flash1-supply = <&vccio_pmu>;
|
||||||
gpio30-supply = <&vccio_pmu>;
|
gpio30-supply = <&vccio_pmu>;
|
||||||
gpio1830 = <&vcc_io>;
|
gpio1830-supply = <&vcc_io>;
|
||||||
lcdc-supply = <&vcc_io>;
|
lcdc-supply = <&vcc_io>;
|
||||||
sdcard-supply = <&vccio_sd>;
|
sdcard-supply = <&vccio_sd>;
|
||||||
wifi-supply = <&vcc_18>;
|
wifi-supply = <&vcc_18>;
|
||||||
|
@ -357,10 +357,10 @@
|
|||||||
audio-supply = <&vcc_18>;
|
audio-supply = <&vcc_18>;
|
||||||
bb-supply = <&vcc_io>;
|
bb-supply = <&vcc_io>;
|
||||||
dvp-supply = <&vcc_io>;
|
dvp-supply = <&vcc_io>;
|
||||||
flash0-suuply = <&vcc_18>;
|
flash0-supply = <&vcc_18>;
|
||||||
flash1-supply = <&vcc_lan>;
|
flash1-supply = <&vcc_lan>;
|
||||||
gpio30-supply = <&vcc_io>;
|
gpio30-supply = <&vcc_io>;
|
||||||
gpio1830 = <&vcc_io>;
|
gpio1830-supply = <&vcc_io>;
|
||||||
lcdc-supply = <&vcc_io>;
|
lcdc-supply = <&vcc_io>;
|
||||||
sdcard-supply = <&vccio_sd>;
|
sdcard-supply = <&vccio_sd>;
|
||||||
wifi-supply = <&vcc_18>;
|
wifi-supply = <&vcc_18>;
|
||||||
|
@ -238,8 +238,8 @@
|
|||||||
compatible = "rockchip,rk3288-timer";
|
compatible = "rockchip,rk3288-timer";
|
||||||
reg = <0x0 0xff810000 0x0 0x20>;
|
reg = <0x0 0xff810000 0x0 0x20>;
|
||||||
interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
|
interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
|
||||||
clocks = <&xin24m>, <&cru PCLK_TIMER>;
|
clocks = <&cru PCLK_TIMER>, <&xin24m>;
|
||||||
clock-names = "timer", "pclk";
|
clock-names = "pclk", "timer";
|
||||||
};
|
};
|
||||||
|
|
||||||
display-subsystem {
|
display-subsystem {
|
||||||
@ -771,7 +771,7 @@
|
|||||||
* *_HDMI HDMI
|
* *_HDMI HDMI
|
||||||
* *_MIPI_* MIPI
|
* *_MIPI_* MIPI
|
||||||
*/
|
*/
|
||||||
pd_vio@RK3288_PD_VIO {
|
power-domain@RK3288_PD_VIO {
|
||||||
reg = <RK3288_PD_VIO>;
|
reg = <RK3288_PD_VIO>;
|
||||||
clocks = <&cru ACLK_IEP>,
|
clocks = <&cru ACLK_IEP>,
|
||||||
<&cru ACLK_ISP>,
|
<&cru ACLK_ISP>,
|
||||||
@ -813,7 +813,7 @@
|
|||||||
* Note: The following 3 are HEVC(H.265) clocks,
|
* Note: The following 3 are HEVC(H.265) clocks,
|
||||||
* and on the ACLK_HEVC_NIU (NOC).
|
* and on the ACLK_HEVC_NIU (NOC).
|
||||||
*/
|
*/
|
||||||
pd_hevc@RK3288_PD_HEVC {
|
power-domain@RK3288_PD_HEVC {
|
||||||
reg = <RK3288_PD_HEVC>;
|
reg = <RK3288_PD_HEVC>;
|
||||||
clocks = <&cru ACLK_HEVC>,
|
clocks = <&cru ACLK_HEVC>,
|
||||||
<&cru SCLK_HEVC_CABAC>,
|
<&cru SCLK_HEVC_CABAC>,
|
||||||
@ -827,7 +827,7 @@
|
|||||||
* (video endecoder & decoder) clocks that on the
|
* (video endecoder & decoder) clocks that on the
|
||||||
* ACLK_VCODEC_NIU and HCLK_VCODEC_NIU (NOC).
|
* ACLK_VCODEC_NIU and HCLK_VCODEC_NIU (NOC).
|
||||||
*/
|
*/
|
||||||
pd_video@RK3288_PD_VIDEO {
|
power-domain@RK3288_PD_VIDEO {
|
||||||
reg = <RK3288_PD_VIDEO>;
|
reg = <RK3288_PD_VIDEO>;
|
||||||
clocks = <&cru ACLK_VCODEC>,
|
clocks = <&cru ACLK_VCODEC>,
|
||||||
<&cru HCLK_VCODEC>;
|
<&cru HCLK_VCODEC>;
|
||||||
@ -838,7 +838,7 @@
|
|||||||
* Note: ACLK_GPU is the GPU clock,
|
* Note: ACLK_GPU is the GPU clock,
|
||||||
* and on the ACLK_GPU_NIU (NOC).
|
* and on the ACLK_GPU_NIU (NOC).
|
||||||
*/
|
*/
|
||||||
pd_gpu@RK3288_PD_GPU {
|
power-domain@RK3288_PD_GPU {
|
||||||
reg = <RK3288_PD_GPU>;
|
reg = <RK3288_PD_GPU>;
|
||||||
clocks = <&cru ACLK_GPU>;
|
clocks = <&cru ACLK_GPU>;
|
||||||
pm_qos = <&qos_gpu_r>,
|
pm_qos = <&qos_gpu_r>,
|
||||||
@ -1575,7 +1575,7 @@
|
|||||||
drive-strength = <12>;
|
drive-strength = <12>;
|
||||||
};
|
};
|
||||||
|
|
||||||
sleep {
|
suspend {
|
||||||
global_pwroff: global-pwroff {
|
global_pwroff: global-pwroff {
|
||||||
rockchip,pins = <0 RK_PA0 1 &pcfg_pull_none>;
|
rockchip,pins = <0 RK_PA0 1 &pcfg_pull_none>;
|
||||||
};
|
};
|
||||||
|
@ -755,14 +755,14 @@
|
|||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
vica: intc@10140000 {
|
vica: interrupt-controller@10140000 {
|
||||||
compatible = "arm,versatile-vic";
|
compatible = "arm,versatile-vic";
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
#interrupt-cells = <1>;
|
#interrupt-cells = <1>;
|
||||||
reg = <0x10140000 0x20>;
|
reg = <0x10140000 0x20>;
|
||||||
};
|
};
|
||||||
|
|
||||||
vicb: intc@10140020 {
|
vicb: interrupt-controller@10140020 {
|
||||||
compatible = "arm,versatile-vic";
|
compatible = "arm,versatile-vic";
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
#interrupt-cells = <1>;
|
#interrupt-cells = <1>;
|
||||||
|
@ -112,17 +112,15 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio_keys {
|
gpio-keys {
|
||||||
compatible = "gpio-keys";
|
compatible = "gpio-keys";
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
autorepeat;
|
autorepeat;
|
||||||
button@0 {
|
button-0 {
|
||||||
label = "Wake up";
|
label = "Wake up";
|
||||||
linux,code = <KEY_WAKEUP>;
|
linux,code = <KEY_WAKEUP>;
|
||||||
gpios = <&gpioa 0 0>;
|
gpios = <&gpioa 0 0>;
|
||||||
};
|
};
|
||||||
button@1 {
|
button-1 {
|
||||||
label = "Tamper";
|
label = "Tamper";
|
||||||
linux,code = <KEY_RESTART>;
|
linux,code = <KEY_RESTART>;
|
||||||
gpios = <&gpioc 13 0>;
|
gpios = <&gpioc 13 0>;
|
||||||
|
@ -81,12 +81,10 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio_keys {
|
gpio-keys {
|
||||||
compatible = "gpio-keys";
|
compatible = "gpio-keys";
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
autorepeat;
|
autorepeat;
|
||||||
button@0 {
|
button-0 {
|
||||||
label = "Wake up";
|
label = "Wake up";
|
||||||
linux,code = <KEY_WAKEUP>;
|
linux,code = <KEY_WAKEUP>;
|
||||||
gpios = <&gpioc 13 0>;
|
gpios = <&gpioc 13 0>;
|
||||||
|
@ -79,12 +79,10 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio_keys {
|
gpio-keys {
|
||||||
compatible = "gpio-keys";
|
compatible = "gpio-keys";
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
autorepeat;
|
autorepeat;
|
||||||
button@0 {
|
button-0 {
|
||||||
label = "User";
|
label = "User";
|
||||||
linux,code = <KEY_HOME>;
|
linux,code = <KEY_HOME>;
|
||||||
gpios = <&gpioa 0 0>;
|
gpios = <&gpioa 0 0>;
|
||||||
|
@ -283,8 +283,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
timers13: timers@40001c00 {
|
timers13: timers@40001c00 {
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
compatible = "st,stm32-timers";
|
compatible = "st,stm32-timers";
|
||||||
reg = <0x40001C00 0x400>;
|
reg = <0x40001C00 0x400>;
|
||||||
clocks = <&rcc 0 STM32F4_APB1_CLOCK(TIM13)>;
|
clocks = <&rcc 0 STM32F4_APB1_CLOCK(TIM13)>;
|
||||||
@ -299,8 +297,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
timers14: timers@40002000 {
|
timers14: timers@40002000 {
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
compatible = "st,stm32-timers";
|
compatible = "st,stm32-timers";
|
||||||
reg = <0x40002000 0x400>;
|
reg = <0x40002000 0x400>;
|
||||||
clocks = <&rcc 0 STM32F4_APB1_CLOCK(TIM14)>;
|
clocks = <&rcc 0 STM32F4_APB1_CLOCK(TIM14)>;
|
||||||
@ -623,8 +619,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
timers10: timers@40014400 {
|
timers10: timers@40014400 {
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
compatible = "st,stm32-timers";
|
compatible = "st,stm32-timers";
|
||||||
reg = <0x40014400 0x400>;
|
reg = <0x40014400 0x400>;
|
||||||
clocks = <&rcc 0 STM32F4_APB2_CLOCK(TIM10)>;
|
clocks = <&rcc 0 STM32F4_APB2_CLOCK(TIM10)>;
|
||||||
@ -639,8 +633,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
timers11: timers@40014800 {
|
timers11: timers@40014800 {
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
compatible = "st,stm32-timers";
|
compatible = "st,stm32-timers";
|
||||||
reg = <0x40014800 0x400>;
|
reg = <0x40014800 0x400>;
|
||||||
clocks = <&rcc 0 STM32F4_APB2_CLOCK(TIM11)>;
|
clocks = <&rcc 0 STM32F4_APB2_CLOCK(TIM11)>;
|
||||||
@ -696,7 +688,7 @@
|
|||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
rcc: rcc@40023810 {
|
rcc: rcc@40023800 {
|
||||||
#reset-cells = <1>;
|
#reset-cells = <1>;
|
||||||
#clock-cells = <2>;
|
#clock-cells = <2>;
|
||||||
compatible = "st,stm32f42xx-rcc", "st,stm32-rcc";
|
compatible = "st,stm32f42xx-rcc", "st,stm32-rcc";
|
||||||
|
@ -104,12 +104,10 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio_keys {
|
gpio-keys {
|
||||||
compatible = "gpio-keys";
|
compatible = "gpio-keys";
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
autorepeat;
|
autorepeat;
|
||||||
button@0 {
|
button-0 {
|
||||||
label = "User";
|
label = "User";
|
||||||
linux,code = <KEY_WAKEUP>;
|
linux,code = <KEY_WAKEUP>;
|
||||||
gpios = <&gpioa 0 GPIO_ACTIVE_HIGH>;
|
gpios = <&gpioa 0 GPIO_ACTIVE_HIGH>;
|
||||||
|
@ -265,8 +265,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
timers13: timers@40001c00 {
|
timers13: timers@40001c00 {
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
compatible = "st,stm32-timers";
|
compatible = "st,stm32-timers";
|
||||||
reg = <0x40001C00 0x400>;
|
reg = <0x40001C00 0x400>;
|
||||||
clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM13)>;
|
clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM13)>;
|
||||||
@ -281,8 +279,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
timers14: timers@40002000 {
|
timers14: timers@40002000 {
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
compatible = "st,stm32-timers";
|
compatible = "st,stm32-timers";
|
||||||
reg = <0x40002000 0x400>;
|
reg = <0x40002000 0x400>;
|
||||||
clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM14)>;
|
clocks = <&rcc 0 STM32F7_APB1_CLOCK(TIM14)>;
|
||||||
@ -366,9 +362,9 @@
|
|||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
i2c3: i2c@40005C00 {
|
i2c3: i2c@40005c00 {
|
||||||
compatible = "st,stm32f7-i2c";
|
compatible = "st,stm32f7-i2c";
|
||||||
reg = <0x40005C00 0x400>;
|
reg = <0x40005c00 0x400>;
|
||||||
interrupts = <72>,
|
interrupts = <72>,
|
||||||
<73>;
|
<73>;
|
||||||
resets = <&rcc STM32F7_APB1_RESET(I2C3)>;
|
resets = <&rcc STM32F7_APB1_RESET(I2C3)>;
|
||||||
@ -533,8 +529,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
timers10: timers@40014400 {
|
timers10: timers@40014400 {
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
compatible = "st,stm32-timers";
|
compatible = "st,stm32-timers";
|
||||||
reg = <0x40014400 0x400>;
|
reg = <0x40014400 0x400>;
|
||||||
clocks = <&rcc 0 STM32F7_APB2_CLOCK(TIM10)>;
|
clocks = <&rcc 0 STM32F7_APB2_CLOCK(TIM10)>;
|
||||||
@ -549,8 +543,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
timers11: timers@40014800 {
|
timers11: timers@40014800 {
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
compatible = "st,stm32-timers";
|
compatible = "st,stm32-timers";
|
||||||
reg = <0x40014800 0x400>;
|
reg = <0x40014800 0x400>;
|
||||||
clocks = <&rcc 0 STM32F7_APB2_CLOCK(TIM11)>;
|
clocks = <&rcc 0 STM32F7_APB2_CLOCK(TIM11)>;
|
||||||
|
@ -75,12 +75,10 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
gpio_keys {
|
gpio-keys {
|
||||||
compatible = "gpio-keys";
|
compatible = "gpio-keys";
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
autorepeat;
|
autorepeat;
|
||||||
button@0 {
|
button-0 {
|
||||||
label = "User";
|
label = "User";
|
||||||
linux,code = <KEY_HOME>;
|
linux,code = <KEY_HOME>;
|
||||||
gpios = <&gpioa 0 GPIO_ACTIVE_HIGH>;
|
gpios = <&gpioa 0 GPIO_ACTIVE_HIGH>;
|
||||||
|
@ -438,8 +438,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
lptimer4: timer@58002c00 {
|
lptimer4: timer@58002c00 {
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
compatible = "st,stm32-lptimer";
|
compatible = "st,stm32-lptimer";
|
||||||
reg = <0x58002c00 0x400>;
|
reg = <0x58002c00 0x400>;
|
||||||
clocks = <&rcc LPTIM4_CK>;
|
clocks = <&rcc LPTIM4_CK>;
|
||||||
@ -454,8 +452,6 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
lptimer5: timer@58003000 {
|
lptimer5: timer@58003000 {
|
||||||
#address-cells = <1>;
|
|
||||||
#size-cells = <0>;
|
|
||||||
compatible = "st,stm32-lptimer";
|
compatible = "st,stm32-lptimer";
|
||||||
reg = <0x58003000 0x400>;
|
reg = <0x58003000 0x400>;
|
||||||
clocks = <&rcc LPTIM5_CK>;
|
clocks = <&rcc LPTIM5_CK>;
|
||||||
|
@ -1311,12 +1311,6 @@
|
|||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
stmmac_axi_config_0: stmmac-axi-config {
|
|
||||||
snps,wr_osr_lmt = <0x7>;
|
|
||||||
snps,rd_osr_lmt = <0x7>;
|
|
||||||
snps,blen = <0 0 0 0 16 8 4>;
|
|
||||||
};
|
|
||||||
|
|
||||||
ethernet0: ethernet@5800a000 {
|
ethernet0: ethernet@5800a000 {
|
||||||
compatible = "st,stm32mp1-dwmac", "snps,dwmac-4.20a";
|
compatible = "st,stm32mp1-dwmac", "snps,dwmac-4.20a";
|
||||||
reg = <0x5800a000 0x2000>;
|
reg = <0x5800a000 0x2000>;
|
||||||
@ -1339,6 +1333,12 @@
|
|||||||
snps,axi-config = <&stmmac_axi_config_0>;
|
snps,axi-config = <&stmmac_axi_config_0>;
|
||||||
snps,tso;
|
snps,tso;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
|
|
||||||
|
stmmac_axi_config_0: stmmac-axi-config {
|
||||||
|
snps,wr_osr_lmt = <0x7>;
|
||||||
|
snps,rd_osr_lmt = <0x7>;
|
||||||
|
snps,blen = <0 0 0 0 16 8 4>;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
usbh_ohci: usbh-ohci@5800c000 {
|
usbh_ohci: usbh-ohci@5800c000 {
|
||||||
|
@ -195,16 +195,15 @@
|
|||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
ranges;
|
ranges;
|
||||||
|
|
||||||
vic: intc@10140000 {
|
vic: interrupt-controller@10140000 {
|
||||||
compatible = "arm,versatile-vic";
|
compatible = "arm,versatile-vic";
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
#interrupt-cells = <1>;
|
#interrupt-cells = <1>;
|
||||||
reg = <0x10140000 0x1000>;
|
reg = <0x10140000 0x1000>;
|
||||||
clear-mask = <0xffffffff>;
|
|
||||||
valid-mask = <0xffffffff>;
|
valid-mask = <0xffffffff>;
|
||||||
};
|
};
|
||||||
|
|
||||||
sic: intc@10003000 {
|
sic: interrupt-controller@10003000 {
|
||||||
compatible = "arm,versatile-sic";
|
compatible = "arm,versatile-sic";
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
#interrupt-cells = <1>;
|
#interrupt-cells = <1>;
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
amba {
|
amba {
|
||||||
/* The Versatile PB is using more SIC IRQ lines than the AB */
|
/* The Versatile PB is using more SIC IRQ lines than the AB */
|
||||||
sic: intc@10003000 {
|
sic: interrupt-controller@10003000 {
|
||||||
clear-mask = <0xffffffff>;
|
clear-mask = <0xffffffff>;
|
||||||
/*
|
/*
|
||||||
* Valid interrupt lines mask according to
|
* Valid interrupt lines mask according to
|
||||||
|
@ -62,6 +62,25 @@ config CRYPTO_SHA512_ARM
|
|||||||
SHA-512 secure hash standard (DFIPS 180-2) implemented
|
SHA-512 secure hash standard (DFIPS 180-2) implemented
|
||||||
using optimized ARM assembler and NEON, when available.
|
using optimized ARM assembler and NEON, when available.
|
||||||
|
|
||||||
|
config CRYPTO_BLAKE2S_ARM
|
||||||
|
tristate "BLAKE2s digest algorithm (ARM)"
|
||||||
|
select CRYPTO_ARCH_HAVE_LIB_BLAKE2S
|
||||||
|
help
|
||||||
|
BLAKE2s digest algorithm optimized with ARM scalar instructions. This
|
||||||
|
is faster than the generic implementations of BLAKE2s and BLAKE2b, but
|
||||||
|
slower than the NEON implementation of BLAKE2b. (There is no NEON
|
||||||
|
implementation of BLAKE2s, since NEON doesn't really help with it.)
|
||||||
|
|
||||||
|
config CRYPTO_BLAKE2B_NEON
|
||||||
|
tristate "BLAKE2b digest algorithm (ARM NEON)"
|
||||||
|
depends on KERNEL_MODE_NEON
|
||||||
|
select CRYPTO_BLAKE2B
|
||||||
|
help
|
||||||
|
BLAKE2b digest algorithm optimized with ARM NEON instructions.
|
||||||
|
On ARM processors that have NEON support but not the ARMv8
|
||||||
|
Crypto Extensions, typically this BLAKE2b implementation is
|
||||||
|
much faster than SHA-2 and slightly faster than SHA-1.
|
||||||
|
|
||||||
config CRYPTO_AES_ARM
|
config CRYPTO_AES_ARM
|
||||||
tristate "Scalar AES cipher for ARM"
|
tristate "Scalar AES cipher for ARM"
|
||||||
select CRYPTO_ALGAPI
|
select CRYPTO_ALGAPI
|
||||||
|
@ -9,6 +9,8 @@ obj-$(CONFIG_CRYPTO_SHA1_ARM) += sha1-arm.o
|
|||||||
obj-$(CONFIG_CRYPTO_SHA1_ARM_NEON) += sha1-arm-neon.o
|
obj-$(CONFIG_CRYPTO_SHA1_ARM_NEON) += sha1-arm-neon.o
|
||||||
obj-$(CONFIG_CRYPTO_SHA256_ARM) += sha256-arm.o
|
obj-$(CONFIG_CRYPTO_SHA256_ARM) += sha256-arm.o
|
||||||
obj-$(CONFIG_CRYPTO_SHA512_ARM) += sha512-arm.o
|
obj-$(CONFIG_CRYPTO_SHA512_ARM) += sha512-arm.o
|
||||||
|
obj-$(CONFIG_CRYPTO_BLAKE2S_ARM) += blake2s-arm.o
|
||||||
|
obj-$(CONFIG_CRYPTO_BLAKE2B_NEON) += blake2b-neon.o
|
||||||
obj-$(CONFIG_CRYPTO_CHACHA20_NEON) += chacha-neon.o
|
obj-$(CONFIG_CRYPTO_CHACHA20_NEON) += chacha-neon.o
|
||||||
obj-$(CONFIG_CRYPTO_NHPOLY1305_NEON) += nhpoly1305-neon.o
|
obj-$(CONFIG_CRYPTO_NHPOLY1305_NEON) += nhpoly1305-neon.o
|
||||||
|
|
||||||
@ -47,6 +49,8 @@ sha256-arm-neon-$(CONFIG_KERNEL_MODE_NEON) := sha256_neon_glue.o
|
|||||||
sha256-arm-y := sha256-core.o sha256_glue.o $(sha256-arm-neon-y)
|
sha256-arm-y := sha256-core.o sha256_glue.o $(sha256-arm-neon-y)
|
||||||
sha512-arm-neon-$(CONFIG_KERNEL_MODE_NEON) := sha512-neon-glue.o
|
sha512-arm-neon-$(CONFIG_KERNEL_MODE_NEON) := sha512-neon-glue.o
|
||||||
sha512-arm-y := sha512-core.o sha512-glue.o $(sha512-arm-neon-y)
|
sha512-arm-y := sha512-core.o sha512-glue.o $(sha512-arm-neon-y)
|
||||||
|
blake2s-arm-y := blake2s-core.o blake2s-glue.o
|
||||||
|
blake2b-neon-y := blake2b-neon-core.o blake2b-neon-glue.o
|
||||||
sha1-arm-ce-y := sha1-ce-core.o sha1-ce-glue.o
|
sha1-arm-ce-y := sha1-ce-core.o sha1-ce-glue.o
|
||||||
sha2-arm-ce-y := sha2-ce-core.o sha2-ce-glue.o
|
sha2-arm-ce-y := sha2-ce-core.o sha2-ce-glue.o
|
||||||
aes-arm-ce-y := aes-ce-core.o aes-ce-glue.o
|
aes-arm-ce-y := aes-ce-core.o aes-ce-glue.o
|
||||||
|
347
arch/arm/crypto/blake2b-neon-core.S
Normal file
347
arch/arm/crypto/blake2b-neon-core.S
Normal file
@ -0,0 +1,347 @@
|
|||||||
|
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||||
|
/*
|
||||||
|
* BLAKE2b digest algorithm, NEON accelerated
|
||||||
|
*
|
||||||
|
* Copyright 2020 Google LLC
|
||||||
|
*
|
||||||
|
* Author: Eric Biggers <ebiggers@google.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <linux/linkage.h>
|
||||||
|
|
||||||
|
.text
|
||||||
|
.fpu neon
|
||||||
|
|
||||||
|
// The arguments to blake2b_compress_neon()
|
||||||
|
STATE .req r0
|
||||||
|
BLOCK .req r1
|
||||||
|
NBLOCKS .req r2
|
||||||
|
INC .req r3
|
||||||
|
|
||||||
|
// Pointers to the rotation tables
|
||||||
|
ROR24_TABLE .req r4
|
||||||
|
ROR16_TABLE .req r5
|
||||||
|
|
||||||
|
// The original stack pointer
|
||||||
|
ORIG_SP .req r6
|
||||||
|
|
||||||
|
// NEON registers which contain the message words of the current block.
|
||||||
|
// M_0-M_3 are occasionally used for other purposes too.
|
||||||
|
M_0 .req d16
|
||||||
|
M_1 .req d17
|
||||||
|
M_2 .req d18
|
||||||
|
M_3 .req d19
|
||||||
|
M_4 .req d20
|
||||||
|
M_5 .req d21
|
||||||
|
M_6 .req d22
|
||||||
|
M_7 .req d23
|
||||||
|
M_8 .req d24
|
||||||
|
M_9 .req d25
|
||||||
|
M_10 .req d26
|
||||||
|
M_11 .req d27
|
||||||
|
M_12 .req d28
|
||||||
|
M_13 .req d29
|
||||||
|
M_14 .req d30
|
||||||
|
M_15 .req d31
|
||||||
|
|
||||||
|
.align 4
|
||||||
|
// Tables for computing ror64(x, 24) and ror64(x, 16) using the vtbl.8
|
||||||
|
// instruction. This is the most efficient way to implement these
|
||||||
|
// rotation amounts with NEON. (On Cortex-A53 it's the same speed as
|
||||||
|
// vshr.u64 + vsli.u64, while on Cortex-A7 it's faster.)
|
||||||
|
.Lror24_table:
|
||||||
|
.byte 3, 4, 5, 6, 7, 0, 1, 2
|
||||||
|
.Lror16_table:
|
||||||
|
.byte 2, 3, 4, 5, 6, 7, 0, 1
|
||||||
|
// The BLAKE2b initialization vector
|
||||||
|
.Lblake2b_IV:
|
||||||
|
.quad 0x6a09e667f3bcc908, 0xbb67ae8584caa73b
|
||||||
|
.quad 0x3c6ef372fe94f82b, 0xa54ff53a5f1d36f1
|
||||||
|
.quad 0x510e527fade682d1, 0x9b05688c2b3e6c1f
|
||||||
|
.quad 0x1f83d9abfb41bd6b, 0x5be0cd19137e2179
|
||||||
|
|
||||||
|
// Execute one round of BLAKE2b by updating the state matrix v[0..15] in the
|
||||||
|
// NEON registers q0-q7. The message block is in q8..q15 (M_0-M_15). The stack
|
||||||
|
// pointer points to a 32-byte aligned buffer containing a copy of q8 and q9
|
||||||
|
// (M_0-M_3), so that they can be reloaded if they are used as temporary
|
||||||
|
// registers. The macro arguments s0-s15 give the order in which the message
|
||||||
|
// words are used in this round. 'final' is 1 if this is the final round.
|
||||||
|
.macro _blake2b_round s0, s1, s2, s3, s4, s5, s6, s7, \
|
||||||
|
s8, s9, s10, s11, s12, s13, s14, s15, final=0
|
||||||
|
|
||||||
|
// Mix the columns:
|
||||||
|
// (v[0], v[4], v[8], v[12]), (v[1], v[5], v[9], v[13]),
|
||||||
|
// (v[2], v[6], v[10], v[14]), and (v[3], v[7], v[11], v[15]).
|
||||||
|
|
||||||
|
// a += b + m[blake2b_sigma[r][2*i + 0]];
|
||||||
|
vadd.u64 q0, q0, q2
|
||||||
|
vadd.u64 q1, q1, q3
|
||||||
|
vadd.u64 d0, d0, M_\s0
|
||||||
|
vadd.u64 d1, d1, M_\s2
|
||||||
|
vadd.u64 d2, d2, M_\s4
|
||||||
|
vadd.u64 d3, d3, M_\s6
|
||||||
|
|
||||||
|
// d = ror64(d ^ a, 32);
|
||||||
|
veor q6, q6, q0
|
||||||
|
veor q7, q7, q1
|
||||||
|
vrev64.32 q6, q6
|
||||||
|
vrev64.32 q7, q7
|
||||||
|
|
||||||
|
// c += d;
|
||||||
|
vadd.u64 q4, q4, q6
|
||||||
|
vadd.u64 q5, q5, q7
|
||||||
|
|
||||||
|
// b = ror64(b ^ c, 24);
|
||||||
|
vld1.8 {M_0}, [ROR24_TABLE, :64]
|
||||||
|
veor q2, q2, q4
|
||||||
|
veor q3, q3, q5
|
||||||
|
vtbl.8 d4, {d4}, M_0
|
||||||
|
vtbl.8 d5, {d5}, M_0
|
||||||
|
vtbl.8 d6, {d6}, M_0
|
||||||
|
vtbl.8 d7, {d7}, M_0
|
||||||
|
|
||||||
|
// a += b + m[blake2b_sigma[r][2*i + 1]];
|
||||||
|
//
|
||||||
|
// M_0 got clobbered above, so we have to reload it if any of the four
|
||||||
|
// message words this step needs happens to be M_0. Otherwise we don't
|
||||||
|
// need to reload it here, as it will just get clobbered again below.
|
||||||
|
.if \s1 == 0 || \s3 == 0 || \s5 == 0 || \s7 == 0
|
||||||
|
vld1.8 {M_0}, [sp, :64]
|
||||||
|
.endif
|
||||||
|
vadd.u64 q0, q0, q2
|
||||||
|
vadd.u64 q1, q1, q3
|
||||||
|
vadd.u64 d0, d0, M_\s1
|
||||||
|
vadd.u64 d1, d1, M_\s3
|
||||||
|
vadd.u64 d2, d2, M_\s5
|
||||||
|
vadd.u64 d3, d3, M_\s7
|
||||||
|
|
||||||
|
// d = ror64(d ^ a, 16);
|
||||||
|
vld1.8 {M_0}, [ROR16_TABLE, :64]
|
||||||
|
veor q6, q6, q0
|
||||||
|
veor q7, q7, q1
|
||||||
|
vtbl.8 d12, {d12}, M_0
|
||||||
|
vtbl.8 d13, {d13}, M_0
|
||||||
|
vtbl.8 d14, {d14}, M_0
|
||||||
|
vtbl.8 d15, {d15}, M_0
|
||||||
|
|
||||||
|
// c += d;
|
||||||
|
vadd.u64 q4, q4, q6
|
||||||
|
vadd.u64 q5, q5, q7
|
||||||
|
|
||||||
|
// b = ror64(b ^ c, 63);
|
||||||
|
//
|
||||||
|
// This rotation amount isn't a multiple of 8, so it has to be
|
||||||
|
// implemented using a pair of shifts, which requires temporary
|
||||||
|
// registers. Use q8-q9 (M_0-M_3) for this, and reload them afterwards.
|
||||||
|
veor q8, q2, q4
|
||||||
|
veor q9, q3, q5
|
||||||
|
vshr.u64 q2, q8, #63
|
||||||
|
vshr.u64 q3, q9, #63
|
||||||
|
vsli.u64 q2, q8, #1
|
||||||
|
vsli.u64 q3, q9, #1
|
||||||
|
vld1.8 {q8-q9}, [sp, :256]
|
||||||
|
|
||||||
|
// Mix the diagonals:
|
||||||
|
// (v[0], v[5], v[10], v[15]), (v[1], v[6], v[11], v[12]),
|
||||||
|
// (v[2], v[7], v[8], v[13]), and (v[3], v[4], v[9], v[14]).
|
||||||
|
//
|
||||||
|
// There are two possible ways to do this: use 'vext' instructions to
|
||||||
|
// shift the rows of the matrix so that the diagonals become columns,
|
||||||
|
// and undo it afterwards; or just use 64-bit operations on 'd'
|
||||||
|
// registers instead of 128-bit operations on 'q' registers. We use the
|
||||||
|
// latter approach, as it performs much better on Cortex-A7.
|
||||||
|
|
||||||
|
// a += b + m[blake2b_sigma[r][2*i + 0]];
|
||||||
|
vadd.u64 d0, d0, d5
|
||||||
|
vadd.u64 d1, d1, d6
|
||||||
|
vadd.u64 d2, d2, d7
|
||||||
|
vadd.u64 d3, d3, d4
|
||||||
|
vadd.u64 d0, d0, M_\s8
|
||||||
|
vadd.u64 d1, d1, M_\s10
|
||||||
|
vadd.u64 d2, d2, M_\s12
|
||||||
|
vadd.u64 d3, d3, M_\s14
|
||||||
|
|
||||||
|
// d = ror64(d ^ a, 32);
|
||||||
|
veor d15, d15, d0
|
||||||
|
veor d12, d12, d1
|
||||||
|
veor d13, d13, d2
|
||||||
|
veor d14, d14, d3
|
||||||
|
vrev64.32 d15, d15
|
||||||
|
vrev64.32 d12, d12
|
||||||
|
vrev64.32 d13, d13
|
||||||
|
vrev64.32 d14, d14
|
||||||
|
|
||||||
|
// c += d;
|
||||||
|
vadd.u64 d10, d10, d15
|
||||||
|
vadd.u64 d11, d11, d12
|
||||||
|
vadd.u64 d8, d8, d13
|
||||||
|
vadd.u64 d9, d9, d14
|
||||||
|
|
||||||
|
// b = ror64(b ^ c, 24);
|
||||||
|
vld1.8 {M_0}, [ROR24_TABLE, :64]
|
||||||
|
veor d5, d5, d10
|
||||||
|
veor d6, d6, d11
|
||||||
|
veor d7, d7, d8
|
||||||
|
veor d4, d4, d9
|
||||||
|
vtbl.8 d5, {d5}, M_0
|
||||||
|
vtbl.8 d6, {d6}, M_0
|
||||||
|
vtbl.8 d7, {d7}, M_0
|
||||||
|
vtbl.8 d4, {d4}, M_0
|
||||||
|
|
||||||
|
// a += b + m[blake2b_sigma[r][2*i + 1]];
|
||||||
|
.if \s9 == 0 || \s11 == 0 || \s13 == 0 || \s15 == 0
|
||||||
|
vld1.8 {M_0}, [sp, :64]
|
||||||
|
.endif
|
||||||
|
vadd.u64 d0, d0, d5
|
||||||
|
vadd.u64 d1, d1, d6
|
||||||
|
vadd.u64 d2, d2, d7
|
||||||
|
vadd.u64 d3, d3, d4
|
||||||
|
vadd.u64 d0, d0, M_\s9
|
||||||
|
vadd.u64 d1, d1, M_\s11
|
||||||
|
vadd.u64 d2, d2, M_\s13
|
||||||
|
vadd.u64 d3, d3, M_\s15
|
||||||
|
|
||||||
|
// d = ror64(d ^ a, 16);
|
||||||
|
vld1.8 {M_0}, [ROR16_TABLE, :64]
|
||||||
|
veor d15, d15, d0
|
||||||
|
veor d12, d12, d1
|
||||||
|
veor d13, d13, d2
|
||||||
|
veor d14, d14, d3
|
||||||
|
vtbl.8 d12, {d12}, M_0
|
||||||
|
vtbl.8 d13, {d13}, M_0
|
||||||
|
vtbl.8 d14, {d14}, M_0
|
||||||
|
vtbl.8 d15, {d15}, M_0
|
||||||
|
|
||||||
|
// c += d;
|
||||||
|
vadd.u64 d10, d10, d15
|
||||||
|
vadd.u64 d11, d11, d12
|
||||||
|
vadd.u64 d8, d8, d13
|
||||||
|
vadd.u64 d9, d9, d14
|
||||||
|
|
||||||
|
// b = ror64(b ^ c, 63);
|
||||||
|
veor d16, d4, d9
|
||||||
|
veor d17, d5, d10
|
||||||
|
veor d18, d6, d11
|
||||||
|
veor d19, d7, d8
|
||||||
|
vshr.u64 q2, q8, #63
|
||||||
|
vshr.u64 q3, q9, #63
|
||||||
|
vsli.u64 q2, q8, #1
|
||||||
|
vsli.u64 q3, q9, #1
|
||||||
|
// Reloading q8-q9 can be skipped on the final round.
|
||||||
|
.if ! \final
|
||||||
|
vld1.8 {q8-q9}, [sp, :256]
|
||||||
|
.endif
|
||||||
|
.endm
|
||||||
|
|
||||||
|
//
|
||||||
|
// void blake2b_compress_neon(struct blake2b_state *state,
|
||||||
|
// const u8 *block, size_t nblocks, u32 inc);
|
||||||
|
//
|
||||||
|
// Only the first three fields of struct blake2b_state are used:
|
||||||
|
// u64 h[8]; (inout)
|
||||||
|
// u64 t[2]; (inout)
|
||||||
|
// u64 f[2]; (in)
|
||||||
|
//
|
||||||
|
.align 5
|
||||||
|
ENTRY(blake2b_compress_neon)
|
||||||
|
push {r4-r10}
|
||||||
|
|
||||||
|
// Allocate a 32-byte stack buffer that is 32-byte aligned.
|
||||||
|
mov ORIG_SP, sp
|
||||||
|
sub ip, sp, #32
|
||||||
|
bic ip, ip, #31
|
||||||
|
mov sp, ip
|
||||||
|
|
||||||
|
adr ROR24_TABLE, .Lror24_table
|
||||||
|
adr ROR16_TABLE, .Lror16_table
|
||||||
|
|
||||||
|
mov ip, STATE
|
||||||
|
vld1.64 {q0-q1}, [ip]! // Load h[0..3]
|
||||||
|
vld1.64 {q2-q3}, [ip]! // Load h[4..7]
|
||||||
|
.Lnext_block:
|
||||||
|
adr r10, .Lblake2b_IV
|
||||||
|
vld1.64 {q14-q15}, [ip] // Load t[0..1] and f[0..1]
|
||||||
|
vld1.64 {q4-q5}, [r10]! // Load IV[0..3]
|
||||||
|
vmov r7, r8, d28 // Copy t[0] to (r7, r8)
|
||||||
|
vld1.64 {q6-q7}, [r10] // Load IV[4..7]
|
||||||
|
adds r7, r7, INC // Increment counter
|
||||||
|
bcs .Lslow_inc_ctr
|
||||||
|
vmov.i32 d28[0], r7
|
||||||
|
vst1.64 {d28}, [ip] // Update t[0]
|
||||||
|
.Linc_ctr_done:
|
||||||
|
|
||||||
|
// Load the next message block and finish initializing the state matrix
|
||||||
|
// 'v'. Fortunately, there are exactly enough NEON registers to fit the
|
||||||
|
// entire state matrix in q0-q7 and the entire message block in q8-15.
|
||||||
|
//
|
||||||
|
// However, _blake2b_round also needs some extra registers for rotates,
|
||||||
|
// so we have to spill some registers. It's better to spill the message
|
||||||
|
// registers than the state registers, as the message doesn't change.
|
||||||
|
// Therefore we store a copy of the first 32 bytes of the message block
|
||||||
|
// (q8-q9) in an aligned buffer on the stack so that they can be
|
||||||
|
// reloaded when needed. (We could just reload directly from the
|
||||||
|
// message buffer, but it's faster to use aligned loads.)
|
||||||
|
vld1.8 {q8-q9}, [BLOCK]!
|
||||||
|
veor q6, q6, q14 // v[12..13] = IV[4..5] ^ t[0..1]
|
||||||
|
vld1.8 {q10-q11}, [BLOCK]!
|
||||||
|
veor q7, q7, q15 // v[14..15] = IV[6..7] ^ f[0..1]
|
||||||
|
vld1.8 {q12-q13}, [BLOCK]!
|
||||||
|
vst1.8 {q8-q9}, [sp, :256]
|
||||||
|
mov ip, STATE
|
||||||
|
vld1.8 {q14-q15}, [BLOCK]!
|
||||||
|
|
||||||
|
// Execute the rounds. Each round is provided the order in which it
|
||||||
|
// needs to use the message words.
|
||||||
|
_blake2b_round 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
|
||||||
|
_blake2b_round 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3
|
||||||
|
_blake2b_round 11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4
|
||||||
|
_blake2b_round 7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8
|
||||||
|
_blake2b_round 9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13
|
||||||
|
_blake2b_round 2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9
|
||||||
|
_blake2b_round 12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11
|
||||||
|
_blake2b_round 13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10
|
||||||
|
_blake2b_round 6, 15, 14, 9, 11, 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5
|
||||||
|
_blake2b_round 10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13, 0
|
||||||
|
_blake2b_round 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
|
||||||
|
_blake2b_round 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3 \
|
||||||
|
final=1
|
||||||
|
|
||||||
|
// Fold the final state matrix into the hash chaining value:
|
||||||
|
//
|
||||||
|
// for (i = 0; i < 8; i++)
|
||||||
|
// h[i] ^= v[i] ^ v[i + 8];
|
||||||
|
//
|
||||||
|
vld1.64 {q8-q9}, [ip]! // Load old h[0..3]
|
||||||
|
veor q0, q0, q4 // v[0..1] ^= v[8..9]
|
||||||
|
veor q1, q1, q5 // v[2..3] ^= v[10..11]
|
||||||
|
vld1.64 {q10-q11}, [ip] // Load old h[4..7]
|
||||||
|
veor q2, q2, q6 // v[4..5] ^= v[12..13]
|
||||||
|
veor q3, q3, q7 // v[6..7] ^= v[14..15]
|
||||||
|
veor q0, q0, q8 // v[0..1] ^= h[0..1]
|
||||||
|
veor q1, q1, q9 // v[2..3] ^= h[2..3]
|
||||||
|
mov ip, STATE
|
||||||
|
subs NBLOCKS, NBLOCKS, #1 // nblocks--
|
||||||
|
vst1.64 {q0-q1}, [ip]! // Store new h[0..3]
|
||||||
|
veor q2, q2, q10 // v[4..5] ^= h[4..5]
|
||||||
|
veor q3, q3, q11 // v[6..7] ^= h[6..7]
|
||||||
|
vst1.64 {q2-q3}, [ip]! // Store new h[4..7]
|
||||||
|
|
||||||
|
// Advance to the next block, if there is one.
|
||||||
|
bne .Lnext_block // nblocks != 0?
|
||||||
|
|
||||||
|
mov sp, ORIG_SP
|
||||||
|
pop {r4-r10}
|
||||||
|
mov pc, lr
|
||||||
|
|
||||||
|
.Lslow_inc_ctr:
|
||||||
|
// Handle the case where the counter overflowed its low 32 bits, by
|
||||||
|
// carrying the overflow bit into the full 128-bit counter.
|
||||||
|
vmov r9, r10, d29
|
||||||
|
adcs r8, r8, #0
|
||||||
|
adcs r9, r9, #0
|
||||||
|
adc r10, r10, #0
|
||||||
|
vmov d28, r7, r8
|
||||||
|
vmov d29, r9, r10
|
||||||
|
vst1.64 {q14}, [ip] // Update t[0] and t[1]
|
||||||
|
b .Linc_ctr_done
|
||||||
|
ENDPROC(blake2b_compress_neon)
|
105
arch/arm/crypto/blake2b-neon-glue.c
Normal file
105
arch/arm/crypto/blake2b-neon-glue.c
Normal file
@ -0,0 +1,105 @@
|
|||||||
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
/*
|
||||||
|
* BLAKE2b digest algorithm, NEON accelerated
|
||||||
|
*
|
||||||
|
* Copyright 2020 Google LLC
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <crypto/internal/blake2b.h>
|
||||||
|
#include <crypto/internal/hash.h>
|
||||||
|
#include <crypto/internal/simd.h>
|
||||||
|
|
||||||
|
#include <linux/module.h>
|
||||||
|
#include <linux/sizes.h>
|
||||||
|
|
||||||
|
#include <asm/neon.h>
|
||||||
|
#include <asm/simd.h>
|
||||||
|
|
||||||
|
asmlinkage void blake2b_compress_neon(struct blake2b_state *state,
|
||||||
|
const u8 *block, size_t nblocks, u32 inc);
|
||||||
|
|
||||||
|
static void blake2b_compress_arch(struct blake2b_state *state,
|
||||||
|
const u8 *block, size_t nblocks, u32 inc)
|
||||||
|
{
|
||||||
|
if (!crypto_simd_usable()) {
|
||||||
|
blake2b_compress_generic(state, block, nblocks, inc);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
do {
|
||||||
|
const size_t blocks = min_t(size_t, nblocks,
|
||||||
|
SZ_4K / BLAKE2B_BLOCK_SIZE);
|
||||||
|
|
||||||
|
kernel_neon_begin();
|
||||||
|
blake2b_compress_neon(state, block, blocks, inc);
|
||||||
|
kernel_neon_end();
|
||||||
|
|
||||||
|
nblocks -= blocks;
|
||||||
|
block += blocks * BLAKE2B_BLOCK_SIZE;
|
||||||
|
} while (nblocks);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int crypto_blake2b_update_neon(struct shash_desc *desc,
|
||||||
|
const u8 *in, unsigned int inlen)
|
||||||
|
{
|
||||||
|
return crypto_blake2b_update(desc, in, inlen, blake2b_compress_arch);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int crypto_blake2b_final_neon(struct shash_desc *desc, u8 *out)
|
||||||
|
{
|
||||||
|
return crypto_blake2b_final(desc, out, blake2b_compress_arch);
|
||||||
|
}
|
||||||
|
|
||||||
|
#define BLAKE2B_ALG(name, driver_name, digest_size) \
|
||||||
|
{ \
|
||||||
|
.base.cra_name = name, \
|
||||||
|
.base.cra_driver_name = driver_name, \
|
||||||
|
.base.cra_priority = 200, \
|
||||||
|
.base.cra_flags = CRYPTO_ALG_OPTIONAL_KEY, \
|
||||||
|
.base.cra_blocksize = BLAKE2B_BLOCK_SIZE, \
|
||||||
|
.base.cra_ctxsize = sizeof(struct blake2b_tfm_ctx), \
|
||||||
|
.base.cra_module = THIS_MODULE, \
|
||||||
|
.digestsize = digest_size, \
|
||||||
|
.setkey = crypto_blake2b_setkey, \
|
||||||
|
.init = crypto_blake2b_init, \
|
||||||
|
.update = crypto_blake2b_update_neon, \
|
||||||
|
.final = crypto_blake2b_final_neon, \
|
||||||
|
.descsize = sizeof(struct blake2b_state), \
|
||||||
|
}
|
||||||
|
|
||||||
|
static struct shash_alg blake2b_neon_algs[] = {
|
||||||
|
BLAKE2B_ALG("blake2b-160", "blake2b-160-neon", BLAKE2B_160_HASH_SIZE),
|
||||||
|
BLAKE2B_ALG("blake2b-256", "blake2b-256-neon", BLAKE2B_256_HASH_SIZE),
|
||||||
|
BLAKE2B_ALG("blake2b-384", "blake2b-384-neon", BLAKE2B_384_HASH_SIZE),
|
||||||
|
BLAKE2B_ALG("blake2b-512", "blake2b-512-neon", BLAKE2B_512_HASH_SIZE),
|
||||||
|
};
|
||||||
|
|
||||||
|
static int __init blake2b_neon_mod_init(void)
|
||||||
|
{
|
||||||
|
if (!(elf_hwcap & HWCAP_NEON))
|
||||||
|
return -ENODEV;
|
||||||
|
|
||||||
|
return crypto_register_shashes(blake2b_neon_algs,
|
||||||
|
ARRAY_SIZE(blake2b_neon_algs));
|
||||||
|
}
|
||||||
|
|
||||||
|
static void __exit blake2b_neon_mod_exit(void)
|
||||||
|
{
|
||||||
|
crypto_unregister_shashes(blake2b_neon_algs,
|
||||||
|
ARRAY_SIZE(blake2b_neon_algs));
|
||||||
|
}
|
||||||
|
|
||||||
|
module_init(blake2b_neon_mod_init);
|
||||||
|
module_exit(blake2b_neon_mod_exit);
|
||||||
|
|
||||||
|
MODULE_DESCRIPTION("BLAKE2b digest algorithm, NEON accelerated");
|
||||||
|
MODULE_LICENSE("GPL");
|
||||||
|
MODULE_AUTHOR("Eric Biggers <ebiggers@google.com>");
|
||||||
|
MODULE_ALIAS_CRYPTO("blake2b-160");
|
||||||
|
MODULE_ALIAS_CRYPTO("blake2b-160-neon");
|
||||||
|
MODULE_ALIAS_CRYPTO("blake2b-256");
|
||||||
|
MODULE_ALIAS_CRYPTO("blake2b-256-neon");
|
||||||
|
MODULE_ALIAS_CRYPTO("blake2b-384");
|
||||||
|
MODULE_ALIAS_CRYPTO("blake2b-384-neon");
|
||||||
|
MODULE_ALIAS_CRYPTO("blake2b-512");
|
||||||
|
MODULE_ALIAS_CRYPTO("blake2b-512-neon");
|
306
arch/arm/crypto/blake2s-core.S
Normal file
306
arch/arm/crypto/blake2s-core.S
Normal file
@ -0,0 +1,306 @@
|
|||||||
|
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||||
|
/*
|
||||||
|
* BLAKE2s digest algorithm, ARM scalar implementation
|
||||||
|
*
|
||||||
|
* Copyright 2020 Google LLC
|
||||||
|
*
|
||||||
|
* Author: Eric Biggers <ebiggers@google.com>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <linux/linkage.h>
|
||||||
|
#include <asm/assembler.h>
|
||||||
|
|
||||||
|
// Registers used to hold message words temporarily. There aren't
|
||||||
|
// enough ARM registers to hold the whole message block, so we have to
|
||||||
|
// load the words on-demand.
|
||||||
|
M_0 .req r12
|
||||||
|
M_1 .req r14
|
||||||
|
|
||||||
|
// The BLAKE2s initialization vector
|
||||||
|
.Lblake2s_IV:
|
||||||
|
.word 0x6A09E667, 0xBB67AE85, 0x3C6EF372, 0xA54FF53A
|
||||||
|
.word 0x510E527F, 0x9B05688C, 0x1F83D9AB, 0x5BE0CD19
|
||||||
|
|
||||||
|
.macro __ldrd a, b, src, offset
|
||||||
|
#if __LINUX_ARM_ARCH__ >= 6
|
||||||
|
ldrd \a, \b, [\src, #\offset]
|
||||||
|
#else
|
||||||
|
ldr \a, [\src, #\offset]
|
||||||
|
ldr \b, [\src, #\offset + 4]
|
||||||
|
#endif
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro __strd a, b, dst, offset
|
||||||
|
#if __LINUX_ARM_ARCH__ >= 6
|
||||||
|
strd \a, \b, [\dst, #\offset]
|
||||||
|
#else
|
||||||
|
str \a, [\dst, #\offset]
|
||||||
|
str \b, [\dst, #\offset + 4]
|
||||||
|
#endif
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro _le32_bswap a, tmp
|
||||||
|
#ifdef __ARMEB__
|
||||||
|
rev_l \a, \tmp
|
||||||
|
#endif
|
||||||
|
.endm
|
||||||
|
|
||||||
|
.macro _le32_bswap_8x a, b, c, d, e, f, g, h, tmp
|
||||||
|
_le32_bswap \a, \tmp
|
||||||
|
_le32_bswap \b, \tmp
|
||||||
|
_le32_bswap \c, \tmp
|
||||||
|
_le32_bswap \d, \tmp
|
||||||
|
_le32_bswap \e, \tmp
|
||||||
|
_le32_bswap \f, \tmp
|
||||||
|
_le32_bswap \g, \tmp
|
||||||
|
_le32_bswap \h, \tmp
|
||||||
|
.endm
|
||||||
|
|
||||||
|
// Execute a quarter-round of BLAKE2s by mixing two columns or two diagonals.
|
||||||
|
// (a0, b0, c0, d0) and (a1, b1, c1, d1) give the registers containing the two
|
||||||
|
// columns/diagonals. s0-s1 are the word offsets to the message words the first
|
||||||
|
// column/diagonal needs, and likewise s2-s3 for the second column/diagonal.
|
||||||
|
// M_0 and M_1 are free to use, and the message block can be found at sp + 32.
|
||||||
|
//
|
||||||
|
// Note that to save instructions, the rotations don't happen when the
|
||||||
|
// pseudocode says they should, but rather they are delayed until the values are
|
||||||
|
// used. See the comment above _blake2s_round().
|
||||||
|
.macro _blake2s_quarterround a0, b0, c0, d0, a1, b1, c1, d1, s0, s1, s2, s3
|
||||||
|
|
||||||
|
ldr M_0, [sp, #32 + 4 * \s0]
|
||||||
|
ldr M_1, [sp, #32 + 4 * \s2]
|
||||||
|
|
||||||
|
// a += b + m[blake2s_sigma[r][2*i + 0]];
|
||||||
|
add \a0, \a0, \b0, ror #brot
|
||||||
|
add \a1, \a1, \b1, ror #brot
|
||||||
|
add \a0, \a0, M_0
|
||||||
|
add \a1, \a1, M_1
|
||||||
|
|
||||||
|
// d = ror32(d ^ a, 16);
|
||||||
|
eor \d0, \a0, \d0, ror #drot
|
||||||
|
eor \d1, \a1, \d1, ror #drot
|
||||||
|
|
||||||
|
// c += d;
|
||||||
|
add \c0, \c0, \d0, ror #16
|
||||||
|
add \c1, \c1, \d1, ror #16
|
||||||
|
|
||||||
|
// b = ror32(b ^ c, 12);
|
||||||
|
eor \b0, \c0, \b0, ror #brot
|
||||||
|
eor \b1, \c1, \b1, ror #brot
|
||||||
|
|
||||||
|
ldr M_0, [sp, #32 + 4 * \s1]
|
||||||
|
ldr M_1, [sp, #32 + 4 * \s3]
|
||||||
|
|
||||||
|
// a += b + m[blake2s_sigma[r][2*i + 1]];
|
||||||
|
add \a0, \a0, \b0, ror #12
|
||||||
|
add \a1, \a1, \b1, ror #12
|
||||||
|
add \a0, \a0, M_0
|
||||||
|
add \a1, \a1, M_1
|
||||||
|
|
||||||
|
// d = ror32(d ^ a, 8);
|
||||||
|
eor \d0, \a0, \d0, ror#16
|
||||||
|
eor \d1, \a1, \d1, ror#16
|
||||||
|
|
||||||
|
// c += d;
|
||||||
|
add \c0, \c0, \d0, ror#8
|
||||||
|
add \c1, \c1, \d1, ror#8
|
||||||
|
|
||||||
|
// b = ror32(b ^ c, 7);
|
||||||
|
eor \b0, \c0, \b0, ror#12
|
||||||
|
eor \b1, \c1, \b1, ror#12
|
||||||
|
.endm
|
||||||
|
|
||||||
|
// Execute one round of BLAKE2s by updating the state matrix v[0..15]. v[0..9]
|
||||||
|
// are in r0..r9. The stack pointer points to 8 bytes of scratch space for
|
||||||
|
// spilling v[8..9], then to v[9..15], then to the message block. r10-r12 and
|
||||||
|
// r14 are free to use. The macro arguments s0-s15 give the order in which the
|
||||||
|
// message words are used in this round.
|
||||||
|
//
|
||||||
|
// All rotates are performed using the implicit rotate operand accepted by the
|
||||||
|
// 'add' and 'eor' instructions. This is faster than using explicit rotate
|
||||||
|
// instructions. To make this work, we allow the values in the second and last
|
||||||
|
// rows of the BLAKE2s state matrix (rows 'b' and 'd') to temporarily have the
|
||||||
|
// wrong rotation amount. The rotation amount is then fixed up just in time
|
||||||
|
// when the values are used. 'brot' is the number of bits the values in row 'b'
|
||||||
|
// need to be rotated right to arrive at the correct values, and 'drot'
|
||||||
|
// similarly for row 'd'. (brot, drot) start out as (0, 0) but we make it such
|
||||||
|
// that they end up as (7, 8) after every round.
|
||||||
|
.macro _blake2s_round s0, s1, s2, s3, s4, s5, s6, s7, \
|
||||||
|
s8, s9, s10, s11, s12, s13, s14, s15
|
||||||
|
|
||||||
|
// Mix first two columns:
|
||||||
|
// (v[0], v[4], v[8], v[12]) and (v[1], v[5], v[9], v[13]).
|
||||||
|
__ldrd r10, r11, sp, 16 // load v[12] and v[13]
|
||||||
|
_blake2s_quarterround r0, r4, r8, r10, r1, r5, r9, r11, \
|
||||||
|
\s0, \s1, \s2, \s3
|
||||||
|
__strd r8, r9, sp, 0
|
||||||
|
__strd r10, r11, sp, 16
|
||||||
|
|
||||||
|
// Mix second two columns:
|
||||||
|
// (v[2], v[6], v[10], v[14]) and (v[3], v[7], v[11], v[15]).
|
||||||
|
__ldrd r8, r9, sp, 8 // load v[10] and v[11]
|
||||||
|
__ldrd r10, r11, sp, 24 // load v[14] and v[15]
|
||||||
|
_blake2s_quarterround r2, r6, r8, r10, r3, r7, r9, r11, \
|
||||||
|
\s4, \s5, \s6, \s7
|
||||||
|
str r10, [sp, #24] // store v[14]
|
||||||
|
// v[10], v[11], and v[15] are used below, so no need to store them yet.
|
||||||
|
|
||||||
|
.set brot, 7
|
||||||
|
.set drot, 8
|
||||||
|
|
||||||
|
// Mix first two diagonals:
|
||||||
|
// (v[0], v[5], v[10], v[15]) and (v[1], v[6], v[11], v[12]).
|
||||||
|
ldr r10, [sp, #16] // load v[12]
|
||||||
|
_blake2s_quarterround r0, r5, r8, r11, r1, r6, r9, r10, \
|
||||||
|
\s8, \s9, \s10, \s11
|
||||||
|
__strd r8, r9, sp, 8
|
||||||
|
str r11, [sp, #28]
|
||||||
|
str r10, [sp, #16]
|
||||||
|
|
||||||
|
// Mix second two diagonals:
|
||||||
|
// (v[2], v[7], v[8], v[13]) and (v[3], v[4], v[9], v[14]).
|
||||||
|
__ldrd r8, r9, sp, 0 // load v[8] and v[9]
|
||||||
|
__ldrd r10, r11, sp, 20 // load v[13] and v[14]
|
||||||
|
_blake2s_quarterround r2, r7, r8, r10, r3, r4, r9, r11, \
|
||||||
|
\s12, \s13, \s14, \s15
|
||||||
|
__strd r10, r11, sp, 20
|
||||||
|
.endm
|
||||||
|
|
||||||
|
//
|
||||||
|
// void blake2s_compress_arch(struct blake2s_state *state,
|
||||||
|
// const u8 *block, size_t nblocks, u32 inc);
|
||||||
|
//
|
||||||
|
// Only the first three fields of struct blake2s_state are used:
|
||||||
|
// u32 h[8]; (inout)
|
||||||
|
// u32 t[2]; (inout)
|
||||||
|
// u32 f[2]; (in)
|
||||||
|
//
|
||||||
|
.align 5
|
||||||
|
ENTRY(blake2s_compress_arch)
|
||||||
|
push {r0-r2,r4-r11,lr} // keep this an even number
|
||||||
|
|
||||||
|
.Lnext_block:
|
||||||
|
// r0 is 'state'
|
||||||
|
// r1 is 'block'
|
||||||
|
// r3 is 'inc'
|
||||||
|
|
||||||
|
// Load and increment the counter t[0..1].
|
||||||
|
__ldrd r10, r11, r0, 32
|
||||||
|
adds r10, r10, r3
|
||||||
|
adc r11, r11, #0
|
||||||
|
__strd r10, r11, r0, 32
|
||||||
|
|
||||||
|
// _blake2s_round is very short on registers, so copy the message block
|
||||||
|
// to the stack to save a register during the rounds. This also has the
|
||||||
|
// advantage that misalignment only needs to be dealt with in one place.
|
||||||
|
sub sp, sp, #64
|
||||||
|
mov r12, sp
|
||||||
|
tst r1, #3
|
||||||
|
bne .Lcopy_block_misaligned
|
||||||
|
ldmia r1!, {r2-r9}
|
||||||
|
_le32_bswap_8x r2, r3, r4, r5, r6, r7, r8, r9, r14
|
||||||
|
stmia r12!, {r2-r9}
|
||||||
|
ldmia r1!, {r2-r9}
|
||||||
|
_le32_bswap_8x r2, r3, r4, r5, r6, r7, r8, r9, r14
|
||||||
|
stmia r12, {r2-r9}
|
||||||
|
.Lcopy_block_done:
|
||||||
|
str r1, [sp, #68] // Update message pointer
|
||||||
|
|
||||||
|
// Calculate v[8..15]. Push v[9..15] onto the stack, and leave space
|
||||||
|
// for spilling v[8..9]. Leave v[8..9] in r8-r9.
|
||||||
|
mov r14, r0 // r14 = state
|
||||||
|
adr r12, .Lblake2s_IV
|
||||||
|
ldmia r12!, {r8-r9} // load IV[0..1]
|
||||||
|
__ldrd r0, r1, r14, 40 // load f[0..1]
|
||||||
|
ldm r12, {r2-r7} // load IV[3..7]
|
||||||
|
eor r4, r4, r10 // v[12] = IV[4] ^ t[0]
|
||||||
|
eor r5, r5, r11 // v[13] = IV[5] ^ t[1]
|
||||||
|
eor r6, r6, r0 // v[14] = IV[6] ^ f[0]
|
||||||
|
eor r7, r7, r1 // v[15] = IV[7] ^ f[1]
|
||||||
|
push {r2-r7} // push v[9..15]
|
||||||
|
sub sp, sp, #8 // leave space for v[8..9]
|
||||||
|
|
||||||
|
// Load h[0..7] == v[0..7].
|
||||||
|
ldm r14, {r0-r7}
|
||||||
|
|
||||||
|
// Execute the rounds. Each round is provided the order in which it
|
||||||
|
// needs to use the message words.
|
||||||
|
.set brot, 0
|
||||||
|
.set drot, 0
|
||||||
|
_blake2s_round 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
|
||||||
|
_blake2s_round 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3
|
||||||
|
_blake2s_round 11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4
|
||||||
|
_blake2s_round 7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8
|
||||||
|
_blake2s_round 9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13
|
||||||
|
_blake2s_round 2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9
|
||||||
|
_blake2s_round 12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11
|
||||||
|
_blake2s_round 13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10
|
||||||
|
_blake2s_round 6, 15, 14, 9, 11, 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5
|
||||||
|
_blake2s_round 10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13, 0
|
||||||
|
|
||||||
|
// Fold the final state matrix into the hash chaining value:
|
||||||
|
//
|
||||||
|
// for (i = 0; i < 8; i++)
|
||||||
|
// h[i] ^= v[i] ^ v[i + 8];
|
||||||
|
//
|
||||||
|
ldr r14, [sp, #96] // r14 = &h[0]
|
||||||
|
add sp, sp, #8 // v[8..9] are already loaded.
|
||||||
|
pop {r10-r11} // load v[10..11]
|
||||||
|
eor r0, r0, r8
|
||||||
|
eor r1, r1, r9
|
||||||
|
eor r2, r2, r10
|
||||||
|
eor r3, r3, r11
|
||||||
|
ldm r14, {r8-r11} // load h[0..3]
|
||||||
|
eor r0, r0, r8
|
||||||
|
eor r1, r1, r9
|
||||||
|
eor r2, r2, r10
|
||||||
|
eor r3, r3, r11
|
||||||
|
stmia r14!, {r0-r3} // store new h[0..3]
|
||||||
|
ldm r14, {r0-r3} // load old h[4..7]
|
||||||
|
pop {r8-r11} // load v[12..15]
|
||||||
|
eor r0, r0, r4, ror #brot
|
||||||
|
eor r1, r1, r5, ror #brot
|
||||||
|
eor r2, r2, r6, ror #brot
|
||||||
|
eor r3, r3, r7, ror #brot
|
||||||
|
eor r0, r0, r8, ror #drot
|
||||||
|
eor r1, r1, r9, ror #drot
|
||||||
|
eor r2, r2, r10, ror #drot
|
||||||
|
eor r3, r3, r11, ror #drot
|
||||||
|
add sp, sp, #64 // skip copy of message block
|
||||||
|
stm r14, {r0-r3} // store new h[4..7]
|
||||||
|
|
||||||
|
// Advance to the next block, if there is one. Note that if there are
|
||||||
|
// multiple blocks, then 'inc' (the counter increment amount) must be
|
||||||
|
// 64. So we can simply set it to 64 without re-loading it.
|
||||||
|
ldm sp, {r0, r1, r2} // load (state, block, nblocks)
|
||||||
|
mov r3, #64 // set 'inc'
|
||||||
|
subs r2, r2, #1 // nblocks--
|
||||||
|
str r2, [sp, #8]
|
||||||
|
bne .Lnext_block // nblocks != 0?
|
||||||
|
|
||||||
|
pop {r0-r2,r4-r11,pc}
|
||||||
|
|
||||||
|
// The next message block (pointed to by r1) isn't 4-byte aligned, so it
|
||||||
|
// can't be loaded using ldmia. Copy it to the stack buffer (pointed to
|
||||||
|
// by r12) using an alternative method. r2-r9 are free to use.
|
||||||
|
.Lcopy_block_misaligned:
|
||||||
|
mov r2, #64
|
||||||
|
1:
|
||||||
|
#ifdef CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS
|
||||||
|
ldr r3, [r1], #4
|
||||||
|
_le32_bswap r3, r4
|
||||||
|
#else
|
||||||
|
ldrb r3, [r1, #0]
|
||||||
|
ldrb r4, [r1, #1]
|
||||||
|
ldrb r5, [r1, #2]
|
||||||
|
ldrb r6, [r1, #3]
|
||||||
|
add r1, r1, #4
|
||||||
|
orr r3, r3, r4, lsl #8
|
||||||
|
orr r3, r3, r5, lsl #16
|
||||||
|
orr r3, r3, r6, lsl #24
|
||||||
|
#endif
|
||||||
|
subs r2, r2, #4
|
||||||
|
str r3, [r12], #4
|
||||||
|
bne 1b
|
||||||
|
b .Lcopy_block_done
|
||||||
|
ENDPROC(blake2s_compress_arch)
|
78
arch/arm/crypto/blake2s-glue.c
Normal file
78
arch/arm/crypto/blake2s-glue.c
Normal file
@ -0,0 +1,78 @@
|
|||||||
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
/*
|
||||||
|
* BLAKE2s digest algorithm, ARM scalar implementation
|
||||||
|
*
|
||||||
|
* Copyright 2020 Google LLC
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <crypto/internal/blake2s.h>
|
||||||
|
#include <crypto/internal/hash.h>
|
||||||
|
|
||||||
|
#include <linux/module.h>
|
||||||
|
|
||||||
|
/* defined in blake2s-core.S */
|
||||||
|
EXPORT_SYMBOL(blake2s_compress_arch);
|
||||||
|
|
||||||
|
static int crypto_blake2s_update_arm(struct shash_desc *desc,
|
||||||
|
const u8 *in, unsigned int inlen)
|
||||||
|
{
|
||||||
|
return crypto_blake2s_update(desc, in, inlen, blake2s_compress_arch);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int crypto_blake2s_final_arm(struct shash_desc *desc, u8 *out)
|
||||||
|
{
|
||||||
|
return crypto_blake2s_final(desc, out, blake2s_compress_arch);
|
||||||
|
}
|
||||||
|
|
||||||
|
#define BLAKE2S_ALG(name, driver_name, digest_size) \
|
||||||
|
{ \
|
||||||
|
.base.cra_name = name, \
|
||||||
|
.base.cra_driver_name = driver_name, \
|
||||||
|
.base.cra_priority = 200, \
|
||||||
|
.base.cra_flags = CRYPTO_ALG_OPTIONAL_KEY, \
|
||||||
|
.base.cra_blocksize = BLAKE2S_BLOCK_SIZE, \
|
||||||
|
.base.cra_ctxsize = sizeof(struct blake2s_tfm_ctx), \
|
||||||
|
.base.cra_module = THIS_MODULE, \
|
||||||
|
.digestsize = digest_size, \
|
||||||
|
.setkey = crypto_blake2s_setkey, \
|
||||||
|
.init = crypto_blake2s_init, \
|
||||||
|
.update = crypto_blake2s_update_arm, \
|
||||||
|
.final = crypto_blake2s_final_arm, \
|
||||||
|
.descsize = sizeof(struct blake2s_state), \
|
||||||
|
}
|
||||||
|
|
||||||
|
static struct shash_alg blake2s_arm_algs[] = {
|
||||||
|
BLAKE2S_ALG("blake2s-128", "blake2s-128-arm", BLAKE2S_128_HASH_SIZE),
|
||||||
|
BLAKE2S_ALG("blake2s-160", "blake2s-160-arm", BLAKE2S_160_HASH_SIZE),
|
||||||
|
BLAKE2S_ALG("blake2s-224", "blake2s-224-arm", BLAKE2S_224_HASH_SIZE),
|
||||||
|
BLAKE2S_ALG("blake2s-256", "blake2s-256-arm", BLAKE2S_256_HASH_SIZE),
|
||||||
|
};
|
||||||
|
|
||||||
|
static int __init blake2s_arm_mod_init(void)
|
||||||
|
{
|
||||||
|
return IS_REACHABLE(CONFIG_CRYPTO_HASH) ?
|
||||||
|
crypto_register_shashes(blake2s_arm_algs,
|
||||||
|
ARRAY_SIZE(blake2s_arm_algs)) : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void __exit blake2s_arm_mod_exit(void)
|
||||||
|
{
|
||||||
|
if (IS_REACHABLE(CONFIG_CRYPTO_HASH))
|
||||||
|
crypto_unregister_shashes(blake2s_arm_algs,
|
||||||
|
ARRAY_SIZE(blake2s_arm_algs));
|
||||||
|
}
|
||||||
|
|
||||||
|
module_init(blake2s_arm_mod_init);
|
||||||
|
module_exit(blake2s_arm_mod_exit);
|
||||||
|
|
||||||
|
MODULE_DESCRIPTION("BLAKE2s digest algorithm, ARM scalar implementation");
|
||||||
|
MODULE_LICENSE("GPL");
|
||||||
|
MODULE_AUTHOR("Eric Biggers <ebiggers@google.com>");
|
||||||
|
MODULE_ALIAS_CRYPTO("blake2s-128");
|
||||||
|
MODULE_ALIAS_CRYPTO("blake2s-128-arm");
|
||||||
|
MODULE_ALIAS_CRYPTO("blake2s-160");
|
||||||
|
MODULE_ALIAS_CRYPTO("blake2s-160-arm");
|
||||||
|
MODULE_ALIAS_CRYPTO("blake2s-224");
|
||||||
|
MODULE_ALIAS_CRYPTO("blake2s-224-arm");
|
||||||
|
MODULE_ALIAS_CRYPTO("blake2s-256");
|
||||||
|
MODULE_ALIAS_CRYPTO("blake2s-256-arm");
|
@ -17,10 +17,14 @@ CFLAGS_REMOVE_return_address.o = -pg
|
|||||||
# Object file lists.
|
# Object file lists.
|
||||||
|
|
||||||
obj-y := elf.o entry-common.o irq.o opcodes.o \
|
obj-y := elf.o entry-common.o irq.o opcodes.o \
|
||||||
process.o ptrace.o reboot.o return_address.o \
|
process.o ptrace.o reboot.o \
|
||||||
setup.o signal.o sigreturn_codes.o \
|
setup.o signal.o sigreturn_codes.o \
|
||||||
stacktrace.o sys_arm.o time.o traps.o
|
stacktrace.o sys_arm.o time.o traps.o
|
||||||
|
|
||||||
|
ifneq ($(CONFIG_ARM_UNWIND),y)
|
||||||
|
obj-$(CONFIG_FRAME_POINTER) += return_address.o
|
||||||
|
endif
|
||||||
|
|
||||||
obj-$(CONFIG_ATAGS) += atags_parse.o
|
obj-$(CONFIG_ATAGS) += atags_parse.o
|
||||||
obj-$(CONFIG_ATAGS_PROC) += atags_proc.o
|
obj-$(CONFIG_ATAGS_PROC) += atags_proc.o
|
||||||
obj-$(CONFIG_DEPRECATED_PARAM_STRUCT) += atags_compat.o
|
obj-$(CONFIG_DEPRECATED_PARAM_STRUCT) += atags_compat.o
|
||||||
|
@ -7,8 +7,6 @@
|
|||||||
*/
|
*/
|
||||||
#include <linux/export.h>
|
#include <linux/export.h>
|
||||||
#include <linux/ftrace.h>
|
#include <linux/ftrace.h>
|
||||||
|
|
||||||
#if defined(CONFIG_FRAME_POINTER) && !defined(CONFIG_ARM_UNWIND)
|
|
||||||
#include <linux/sched.h>
|
#include <linux/sched.h>
|
||||||
|
|
||||||
#include <asm/stacktrace.h>
|
#include <asm/stacktrace.h>
|
||||||
@ -53,6 +51,4 @@ void *return_address(unsigned int level)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* if defined(CONFIG_FRAME_POINTER) && !defined(CONFIG_ARM_UNWIND) */
|
|
||||||
|
|
||||||
EXPORT_SYMBOL_GPL(return_address);
|
EXPORT_SYMBOL_GPL(return_address);
|
||||||
|
@ -103,6 +103,7 @@ struct mmdc_pmu {
|
|||||||
struct perf_event *mmdc_events[MMDC_NUM_COUNTERS];
|
struct perf_event *mmdc_events[MMDC_NUM_COUNTERS];
|
||||||
struct hlist_node node;
|
struct hlist_node node;
|
||||||
struct fsl_mmdc_devtype_data *devtype_data;
|
struct fsl_mmdc_devtype_data *devtype_data;
|
||||||
|
struct clk *mmdc_ipg_clk;
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -462,11 +463,14 @@ static int imx_mmdc_remove(struct platform_device *pdev)
|
|||||||
|
|
||||||
cpuhp_state_remove_instance_nocalls(cpuhp_mmdc_state, &pmu_mmdc->node);
|
cpuhp_state_remove_instance_nocalls(cpuhp_mmdc_state, &pmu_mmdc->node);
|
||||||
perf_pmu_unregister(&pmu_mmdc->pmu);
|
perf_pmu_unregister(&pmu_mmdc->pmu);
|
||||||
|
iounmap(pmu_mmdc->mmdc_base);
|
||||||
|
clk_disable_unprepare(pmu_mmdc->mmdc_ipg_clk);
|
||||||
kfree(pmu_mmdc);
|
kfree(pmu_mmdc);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int imx_mmdc_perf_init(struct platform_device *pdev, void __iomem *mmdc_base)
|
static int imx_mmdc_perf_init(struct platform_device *pdev, void __iomem *mmdc_base,
|
||||||
|
struct clk *mmdc_ipg_clk)
|
||||||
{
|
{
|
||||||
struct mmdc_pmu *pmu_mmdc;
|
struct mmdc_pmu *pmu_mmdc;
|
||||||
char *name;
|
char *name;
|
||||||
@ -494,6 +498,7 @@ static int imx_mmdc_perf_init(struct platform_device *pdev, void __iomem *mmdc_b
|
|||||||
}
|
}
|
||||||
|
|
||||||
mmdc_num = mmdc_pmu_init(pmu_mmdc, mmdc_base, &pdev->dev);
|
mmdc_num = mmdc_pmu_init(pmu_mmdc, mmdc_base, &pdev->dev);
|
||||||
|
pmu_mmdc->mmdc_ipg_clk = mmdc_ipg_clk;
|
||||||
if (mmdc_num == 0)
|
if (mmdc_num == 0)
|
||||||
name = "mmdc";
|
name = "mmdc";
|
||||||
else
|
else
|
||||||
@ -529,7 +534,7 @@ pmu_free:
|
|||||||
|
|
||||||
#else
|
#else
|
||||||
#define imx_mmdc_remove NULL
|
#define imx_mmdc_remove NULL
|
||||||
#define imx_mmdc_perf_init(pdev, mmdc_base) 0
|
#define imx_mmdc_perf_init(pdev, mmdc_base, mmdc_ipg_clk) 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static int imx_mmdc_probe(struct platform_device *pdev)
|
static int imx_mmdc_probe(struct platform_device *pdev)
|
||||||
@ -567,7 +572,13 @@ static int imx_mmdc_probe(struct platform_device *pdev)
|
|||||||
val &= ~(1 << BP_MMDC_MAPSR_PSD);
|
val &= ~(1 << BP_MMDC_MAPSR_PSD);
|
||||||
writel_relaxed(val, reg);
|
writel_relaxed(val, reg);
|
||||||
|
|
||||||
return imx_mmdc_perf_init(pdev, mmdc_base);
|
err = imx_mmdc_perf_init(pdev, mmdc_base, mmdc_ipg_clk);
|
||||||
|
if (err) {
|
||||||
|
iounmap(mmdc_base);
|
||||||
|
clk_disable_unprepare(mmdc_ipg_clk);
|
||||||
|
}
|
||||||
|
|
||||||
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
int imx_mmdc_get_ddr_type(void)
|
int imx_mmdc_get_ddr_type(void)
|
||||||
|
@ -28,11 +28,11 @@
|
|||||||
* ^
|
* ^
|
||||||
* ^
|
* ^
|
||||||
* imx53_suspend code
|
* imx53_suspend code
|
||||||
* PM_INFO structure(imx53_suspend_info)
|
* PM_INFO structure(imx5_cpu_suspend_info)
|
||||||
* ======================== low address =======================
|
* ======================== low address =======================
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Offsets of members of struct imx53_suspend_info */
|
/* Offsets of members of struct imx5_cpu_suspend_info */
|
||||||
#define SUSPEND_INFO_MX53_M4IF_V_OFFSET 0x0
|
#define SUSPEND_INFO_MX53_M4IF_V_OFFSET 0x0
|
||||||
#define SUSPEND_INFO_MX53_IOMUXC_V_OFFSET 0x4
|
#define SUSPEND_INFO_MX53_IOMUXC_V_OFFSET 0x4
|
||||||
#define SUSPEND_INFO_MX53_IO_COUNT_OFFSET 0x8
|
#define SUSPEND_INFO_MX53_IO_COUNT_OFFSET 0x8
|
||||||
|
@ -1602,6 +1602,9 @@ exit:
|
|||||||
rn = arm_bpf_get_reg32(src_lo, tmp2[1], ctx);
|
rn = arm_bpf_get_reg32(src_lo, tmp2[1], ctx);
|
||||||
emit_ldx_r(dst, rn, off, ctx, BPF_SIZE(code));
|
emit_ldx_r(dst, rn, off, ctx, BPF_SIZE(code));
|
||||||
break;
|
break;
|
||||||
|
/* speculation barrier */
|
||||||
|
case BPF_ST | BPF_NOSPEC:
|
||||||
|
break;
|
||||||
/* ST: *(size *)(dst + off) = imm */
|
/* ST: *(size *)(dst + off) = imm */
|
||||||
case BPF_ST | BPF_MEM | BPF_W:
|
case BPF_ST | BPF_MEM | BPF_W:
|
||||||
case BPF_ST | BPF_MEM | BPF_H:
|
case BPF_ST | BPF_MEM | BPF_H:
|
||||||
|
@ -537,13 +537,13 @@
|
|||||||
clocks {
|
clocks {
|
||||||
compatible = "arm,scpi-clocks";
|
compatible = "arm,scpi-clocks";
|
||||||
|
|
||||||
scpi_dvfs: scpi-dvfs {
|
scpi_dvfs: clocks-0 {
|
||||||
compatible = "arm,scpi-dvfs-clocks";
|
compatible = "arm,scpi-dvfs-clocks";
|
||||||
#clock-cells = <1>;
|
#clock-cells = <1>;
|
||||||
clock-indices = <0>, <1>, <2>;
|
clock-indices = <0>, <1>, <2>;
|
||||||
clock-output-names = "atlclk", "aplclk","gpuclk";
|
clock-output-names = "atlclk", "aplclk","gpuclk";
|
||||||
};
|
};
|
||||||
scpi_clk: scpi-clk {
|
scpi_clk: clocks-1 {
|
||||||
compatible = "arm,scpi-variable-clocks";
|
compatible = "arm,scpi-variable-clocks";
|
||||||
#clock-cells = <1>;
|
#clock-cells = <1>;
|
||||||
clock-indices = <3>;
|
clock-indices = <3>;
|
||||||
@ -551,7 +551,7 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
scpi_devpd: scpi-power-domains {
|
scpi_devpd: power-controller {
|
||||||
compatible = "arm,scpi-power-domains";
|
compatible = "arm,scpi-power-domains";
|
||||||
num-domains = <2>;
|
num-domains = <2>;
|
||||||
#power-domain-cells = <1>;
|
#power-domain-cells = <1>;
|
||||||
|
@ -113,7 +113,7 @@
|
|||||||
#address-cells = <0>;
|
#address-cells = <0>;
|
||||||
interrupt-controller;
|
interrupt-controller;
|
||||||
reg = <0x11001000 0x1000>,
|
reg = <0x11001000 0x1000>,
|
||||||
<0x11002000 0x1000>,
|
<0x11002000 0x2000>,
|
||||||
<0x11004000 0x2000>,
|
<0x11004000 0x2000>,
|
||||||
<0x11006000 0x2000>;
|
<0x11006000 0x2000>;
|
||||||
};
|
};
|
||||||
|
@ -65,7 +65,7 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
sysclk: clock-sysclk {
|
sysclk: sysclk {
|
||||||
compatible = "fixed-clock";
|
compatible = "fixed-clock";
|
||||||
#clock-cells = <0>;
|
#clock-cells = <0>;
|
||||||
clock-frequency = <100000000>;
|
clock-frequency = <100000000>;
|
||||||
|
@ -501,7 +501,6 @@
|
|||||||
clocks = <&clockgen 4 3>;
|
clocks = <&clockgen 4 3>;
|
||||||
clock-names = "dspi";
|
clock-names = "dspi";
|
||||||
spi-num-chipselects = <5>;
|
spi-num-chipselects = <5>;
|
||||||
bus-num = <0>;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
esdhc: esdhc@2140000 {
|
esdhc: esdhc@2140000 {
|
||||||
|
@ -1056,6 +1056,14 @@
|
|||||||
<&src IMX8MQ_RESET_PCIE_CTRL_APPS_EN>,
|
<&src IMX8MQ_RESET_PCIE_CTRL_APPS_EN>,
|
||||||
<&src IMX8MQ_RESET_PCIE_CTRL_APPS_TURNOFF>;
|
<&src IMX8MQ_RESET_PCIE_CTRL_APPS_TURNOFF>;
|
||||||
reset-names = "pciephy", "apps", "turnoff";
|
reset-names = "pciephy", "apps", "turnoff";
|
||||||
|
assigned-clocks = <&clk IMX8MQ_CLK_PCIE1_CTRL>,
|
||||||
|
<&clk IMX8MQ_CLK_PCIE1_PHY>,
|
||||||
|
<&clk IMX8MQ_CLK_PCIE1_AUX>;
|
||||||
|
assigned-clock-parents = <&clk IMX8MQ_SYS2_PLL_250M>,
|
||||||
|
<&clk IMX8MQ_SYS2_PLL_100M>,
|
||||||
|
<&clk IMX8MQ_SYS1_PLL_80M>;
|
||||||
|
assigned-clock-rates = <250000000>, <100000000>,
|
||||||
|
<10000000>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1085,6 +1093,14 @@
|
|||||||
<&src IMX8MQ_RESET_PCIE2_CTRL_APPS_EN>,
|
<&src IMX8MQ_RESET_PCIE2_CTRL_APPS_EN>,
|
||||||
<&src IMX8MQ_RESET_PCIE2_CTRL_APPS_TURNOFF>;
|
<&src IMX8MQ_RESET_PCIE2_CTRL_APPS_TURNOFF>;
|
||||||
reset-names = "pciephy", "apps", "turnoff";
|
reset-names = "pciephy", "apps", "turnoff";
|
||||||
|
assigned-clocks = <&clk IMX8MQ_CLK_PCIE2_CTRL>,
|
||||||
|
<&clk IMX8MQ_CLK_PCIE2_PHY>,
|
||||||
|
<&clk IMX8MQ_CLK_PCIE2_AUX>;
|
||||||
|
assigned-clock-parents = <&clk IMX8MQ_SYS2_PLL_250M>,
|
||||||
|
<&clk IMX8MQ_SYS2_PLL_100M>,
|
||||||
|
<&clk IMX8MQ_SYS1_PLL_80M>;
|
||||||
|
assigned-clock-rates = <250000000>, <100000000>,
|
||||||
|
<10000000>;
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -106,12 +106,19 @@
|
|||||||
/* enabled by U-Boot if SFP module is present */
|
/* enabled by U-Boot if SFP module is present */
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
firmware {
|
||||||
|
armada-3700-rwtm {
|
||||||
|
compatible = "marvell,armada-3700-rwtm-firmware", "cznic,turris-mox-rwtm";
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
&i2c0 {
|
&i2c0 {
|
||||||
pinctrl-names = "default";
|
pinctrl-names = "default";
|
||||||
pinctrl-0 = <&i2c1_pins>;
|
pinctrl-0 = <&i2c1_pins>;
|
||||||
clock-frequency = <100000>;
|
clock-frequency = <100000>;
|
||||||
|
/delete-property/ mrvl,i2c-fast-mode;
|
||||||
status = "okay";
|
status = "okay";
|
||||||
|
|
||||||
rtc@6f {
|
rtc@6f {
|
||||||
|
@ -500,4 +500,12 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
firmware {
|
||||||
|
armada-3700-rwtm {
|
||||||
|
compatible = "marvell,armada-3700-rwtm-firmware";
|
||||||
|
mboxes = <&rwtm 0>;
|
||||||
|
status = "okay";
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
@ -30,3 +30,7 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&msmgpio {
|
||||||
|
gpio-reserved-ranges = <85 4>;
|
||||||
|
};
|
||||||
|
@ -277,10 +277,6 @@
|
|||||||
interrupt-parent = <&gpio1>;
|
interrupt-parent = <&gpio1>;
|
||||||
interrupts = <28 IRQ_TYPE_LEVEL_LOW>;
|
interrupts = <28 IRQ_TYPE_LEVEL_LOW>;
|
||||||
|
|
||||||
/* Depends on LVDS */
|
|
||||||
max-clock = <135000000>;
|
|
||||||
min-vrefresh = <50>;
|
|
||||||
|
|
||||||
adi,input-depth = <8>;
|
adi,input-depth = <8>;
|
||||||
adi,input-colorspace = "rgb";
|
adi,input-colorspace = "rgb";
|
||||||
adi,input-clock = "1x";
|
adi,input-clock = "1x";
|
||||||
|
@ -213,20 +213,20 @@
|
|||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
|
|
||||||
/* These power domains are grouped by VD_LOGIC */
|
/* These power domains are grouped by VD_LOGIC */
|
||||||
pd_usb@PX30_PD_USB {
|
power-domain@PX30_PD_USB {
|
||||||
reg = <PX30_PD_USB>;
|
reg = <PX30_PD_USB>;
|
||||||
clocks = <&cru HCLK_HOST>,
|
clocks = <&cru HCLK_HOST>,
|
||||||
<&cru HCLK_OTG>,
|
<&cru HCLK_OTG>,
|
||||||
<&cru SCLK_OTG_ADP>;
|
<&cru SCLK_OTG_ADP>;
|
||||||
pm_qos = <&qos_usb_host>, <&qos_usb_otg>;
|
pm_qos = <&qos_usb_host>, <&qos_usb_otg>;
|
||||||
};
|
};
|
||||||
pd_sdcard@PX30_PD_SDCARD {
|
power-domain@PX30_PD_SDCARD {
|
||||||
reg = <PX30_PD_SDCARD>;
|
reg = <PX30_PD_SDCARD>;
|
||||||
clocks = <&cru HCLK_SDMMC>,
|
clocks = <&cru HCLK_SDMMC>,
|
||||||
<&cru SCLK_SDMMC>;
|
<&cru SCLK_SDMMC>;
|
||||||
pm_qos = <&qos_sdmmc>;
|
pm_qos = <&qos_sdmmc>;
|
||||||
};
|
};
|
||||||
pd_gmac@PX30_PD_GMAC {
|
power-domain@PX30_PD_GMAC {
|
||||||
reg = <PX30_PD_GMAC>;
|
reg = <PX30_PD_GMAC>;
|
||||||
clocks = <&cru ACLK_GMAC>,
|
clocks = <&cru ACLK_GMAC>,
|
||||||
<&cru PCLK_GMAC>,
|
<&cru PCLK_GMAC>,
|
||||||
@ -234,7 +234,7 @@
|
|||||||
<&cru SCLK_GMAC_RX_TX>;
|
<&cru SCLK_GMAC_RX_TX>;
|
||||||
pm_qos = <&qos_gmac>;
|
pm_qos = <&qos_gmac>;
|
||||||
};
|
};
|
||||||
pd_mmc_nand@PX30_PD_MMC_NAND {
|
power-domain@PX30_PD_MMC_NAND {
|
||||||
reg = <PX30_PD_MMC_NAND>;
|
reg = <PX30_PD_MMC_NAND>;
|
||||||
clocks = <&cru HCLK_NANDC>,
|
clocks = <&cru HCLK_NANDC>,
|
||||||
<&cru HCLK_EMMC>,
|
<&cru HCLK_EMMC>,
|
||||||
@ -247,14 +247,14 @@
|
|||||||
pm_qos = <&qos_emmc>, <&qos_nand>,
|
pm_qos = <&qos_emmc>, <&qos_nand>,
|
||||||
<&qos_sdio>, <&qos_sfc>;
|
<&qos_sdio>, <&qos_sfc>;
|
||||||
};
|
};
|
||||||
pd_vpu@PX30_PD_VPU {
|
power-domain@PX30_PD_VPU {
|
||||||
reg = <PX30_PD_VPU>;
|
reg = <PX30_PD_VPU>;
|
||||||
clocks = <&cru ACLK_VPU>,
|
clocks = <&cru ACLK_VPU>,
|
||||||
<&cru HCLK_VPU>,
|
<&cru HCLK_VPU>,
|
||||||
<&cru SCLK_CORE_VPU>;
|
<&cru SCLK_CORE_VPU>;
|
||||||
pm_qos = <&qos_vpu>, <&qos_vpu_r128>;
|
pm_qos = <&qos_vpu>, <&qos_vpu_r128>;
|
||||||
};
|
};
|
||||||
pd_vo@PX30_PD_VO {
|
power-domain@PX30_PD_VO {
|
||||||
reg = <PX30_PD_VO>;
|
reg = <PX30_PD_VO>;
|
||||||
clocks = <&cru ACLK_RGA>,
|
clocks = <&cru ACLK_RGA>,
|
||||||
<&cru ACLK_VOPB>,
|
<&cru ACLK_VOPB>,
|
||||||
@ -270,7 +270,7 @@
|
|||||||
pm_qos = <&qos_rga_rd>, <&qos_rga_wr>,
|
pm_qos = <&qos_rga_rd>, <&qos_rga_wr>,
|
||||||
<&qos_vop_m0>, <&qos_vop_m1>;
|
<&qos_vop_m0>, <&qos_vop_m1>;
|
||||||
};
|
};
|
||||||
pd_vi@PX30_PD_VI {
|
power-domain@PX30_PD_VI {
|
||||||
reg = <PX30_PD_VI>;
|
reg = <PX30_PD_VI>;
|
||||||
clocks = <&cru ACLK_CIF>,
|
clocks = <&cru ACLK_CIF>,
|
||||||
<&cru ACLK_ISP>,
|
<&cru ACLK_ISP>,
|
||||||
@ -281,7 +281,7 @@
|
|||||||
<&qos_isp_wr>, <&qos_isp_m1>,
|
<&qos_isp_wr>, <&qos_isp_m1>,
|
||||||
<&qos_vip>;
|
<&qos_vip>;
|
||||||
};
|
};
|
||||||
pd_gpu@PX30_PD_GPU {
|
power-domain@PX30_PD_GPU {
|
||||||
reg = <PX30_PD_GPU>;
|
reg = <PX30_PD_GPU>;
|
||||||
clocks = <&cru SCLK_GPU>;
|
clocks = <&cru SCLK_GPU>;
|
||||||
pm_qos = <&qos_gpu>;
|
pm_qos = <&qos_gpu>;
|
||||||
|
@ -270,13 +270,13 @@
|
|||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <0>;
|
#size-cells = <0>;
|
||||||
|
|
||||||
pd_hevc@RK3328_PD_HEVC {
|
power-domain@RK3328_PD_HEVC {
|
||||||
reg = <RK3328_PD_HEVC>;
|
reg = <RK3328_PD_HEVC>;
|
||||||
};
|
};
|
||||||
pd_video@RK3328_PD_VIDEO {
|
power-domain@RK3328_PD_VIDEO {
|
||||||
reg = <RK3328_PD_VIDEO>;
|
reg = <RK3328_PD_VIDEO>;
|
||||||
};
|
};
|
||||||
pd_vpu@RK3328_PD_VPU {
|
power-domain@RK3328_PD_VPU {
|
||||||
reg = <RK3328_PD_VPU>;
|
reg = <RK3328_PD_VPU>;
|
||||||
clocks = <&cru ACLK_VPU>, <&cru HCLK_VPU>;
|
clocks = <&cru ACLK_VPU>, <&cru HCLK_VPU>;
|
||||||
};
|
};
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user