Re: [PATCH v9 05/24] wfx: add main.c/main.h
Hi Kalle, On Tuesday 11 January 2022 18:14:05 CET Jerome Pouiller wrote: > From: Jérôme Pouiller > > Signed-off-by: Jérôme Pouiller > --- > drivers/net/wireless/silabs/wfx/main.c | 485 + > drivers/net/wireless/silabs/wfx/main.h | 42 +++ > 2 files changed, 527 insertions(+) > create mode 100644 drivers/net/wireless/silabs/wfx/main.c > create mode 100644 drivers/net/wireless/silabs/wfx/main.h > [...] > +/* The device needs data about the antenna configuration. This information in > + * provided by PDS (Platform Data Set, this is the wording used in WF200 > + * documentation) files. For hardware integrators, the full process to create > + * PDS files is described here: > + * https:github.com/SiliconLabs/wfx-firmware/blob/master/PDS/README.md > + * > + * The PDS file is an array of Time-Length-Value structs. > + */ > + int wfx_send_pds(struct wfx_dev *wdev, u8 *buf, size_t len) > +{ > + int ret, chunk_type, chunk_len, chunk_num = 0; > + > + if (*buf == '{') { > + dev_err(wdev->dev, "PDS: malformed file (legacy format?)\n"); > + return -EINVAL; > + } > + while (len > 0) { > + chunk_type = get_unaligned_le16(buf + 0); > + chunk_len = get_unaligned_le16(buf + 2); > + if (chunk_len > len) { > + dev_err(wdev->dev, "PDS:%d: corrupted file\n", > chunk_num); > + return -EINVAL; > + } > + if (chunk_type != WFX_PDS_TLV_TYPE) { > + dev_info(wdev->dev, "PDS:%d: skip unknown data\n", > chunk_num); > + goto next; > + } > + if (chunk_len > WFX_PDS_MAX_CHUNK_SIZE) > + dev_warn(wdev->dev, "PDS:%d: unexpectly large chunk\n", > chunk_num); > + if (buf[4] != '{' || buf[chunk_len - 1] != '}') > + dev_warn(wdev->dev, "PDS:%d: unexpected content\n", > chunk_num); > + > + ret = wfx_hif_configuration(wdev, buf + 4, chunk_len - 4); > + if (ret > 0) { > + dev_err(wdev->dev, "PDS:%d: invalid data (unsupported > options?)\n", > + chunk_num); > + return -EINVAL; > + } > + if (ret == -ETIMEDOUT) { > + dev_err(wdev->dev, "PDS:%d: chip didn't reply > (corrupted file?)\n", > + chunk_num); > + return ret; > + } > + if (ret) { > + dev_err(wdev->dev, "PDS:%d: chip returned an unknown > error\n", chunk_num); > + return -EIO; > + } > +next: > + chunk_num++; > + len -= chunk_len; > + buf += chunk_len; > + } > + return 0; > +} Kalle, is this function what you expected? If it is right for you, I am going to send it to the staging tree. -- Jérôme Pouiller ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[staging:staging-testing] BUILD SUCCESS 64b2d6ffff862c0e7278198b4229e42e1abb3bb1
i386 randconfig-a005-20220124 i386 randconfig-a003-20220124 i386 randconfig-a004-20220124 i386 randconfig-a001-20220124 i386 randconfig-a006-20220124 x86_64randconfig-a011 x86_64randconfig-a013 x86_64randconfig-a015 x86_64randconfig-a006 x86_64randconfig-a004 x86_64randconfig-a002 i386 randconfig-a012 i386 randconfig-a014 i386 randconfig-a016 arc randconfig-r043-20220124 riscvrandconfig-r042-20220125 arc randconfig-r043-20220125 s390 randconfig-r044-20220125 riscvnommu_k210_defconfig riscvallyesconfig riscvnommu_virt_defconfig riscv allnoconfig riscv defconfig riscv rv32_defconfig riscvallmodconfig x86_64rhel-8.3-kselftests um x86_64_defconfig um i386_defconfig x86_64 allyesconfig x86_64 defconfig x86_64 rhel-8.3 x86_64 rhel-8.3-func x86_64 kexec clang tested configs: arm randconfig-c002-20220124 riscvrandconfig-c006-20220124 i386 randconfig-c001-20220124 powerpc randconfig-c003-20220124 mips randconfig-c004-20220124 x86_64 randconfig-c007-20220124 arm imote2_defconfig powerpc mpc866_ads_defconfig powerpc mpc834x_itxgp_defconfig mipsmalta_qemu_32r6_defconfig mips tb0219_defconfig mips malta_defconfig powerpc mpc836x_mds_defconfig powerpcsocrates_defconfig powerpc obs600_defconfig armmmp2_defconfig mips sb1250_swarm_defconfig powerpc microwatt_defconfig arm omap1_defconfig powerpc skiroot_defconfig i386 allyesconfig powerpc walnut_defconfig powerpc xes_mpc85xx_defconfig powerpc powernv_defconfig i386 randconfig-a002 i386 randconfig-a006 i386 randconfig-a004 x86_64 randconfig-a011-20220124 x86_64 randconfig-a013-20220124 x86_64 randconfig-a015-20220124 x86_64 randconfig-a016-20220124 x86_64 randconfig-a014-20220124 x86_64 randconfig-a012-20220124 x86_64randconfig-a012 x86_64randconfig-a014 x86_64randconfig-a016 i386 randconfig-a011-20220124 i386 randconfig-a016-20220124 i386 randconfig-a013-20220124 i386 randconfig-a014-20220124 i386 randconfig-a015-20220124 i386 randconfig-a012-20220124 i386 randconfig-a013 i386 randconfig-a011 i386 randconfig-a015 hexagon randconfig-r045-20220124 hexagon randconfig-r041-20220124 riscvrandconfig-r042-20220124 s390 randconfig-r044-20220124 hexagon randconfig-r045-20220125 hexagon randconfig-r041-20220125 riscvrandconfig-r042-20220126 hexagon randconfig-r045-20220126 hexagon randconfig-r041-20220126 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[driver-core:driver-core-testing] BUILD SUCCESS c6479f19e2573b2bac15ab9265b2ec975f40296f
randconfig-a014 i386 randconfig-a016 riscvrandconfig-r042-20220125 arc randconfig-r043-20220125 arc randconfig-r043-20220124 s390 randconfig-r044-20220125 riscvnommu_k210_defconfig riscvallyesconfig riscvnommu_virt_defconfig riscv allnoconfig riscv defconfig riscv rv32_defconfig riscvallmodconfig x86_64rhel-8.3-kselftests um x86_64_defconfig um i386_defconfig x86_64 allyesconfig x86_64 defconfig x86_64 rhel-8.3 x86_64 rhel-8.3-func x86_64 kexec clang tested configs: arm randconfig-c002-20220124 riscvrandconfig-c006-20220124 i386 randconfig-c001-20220124 powerpc randconfig-c003-20220124 mips randconfig-c004-20220124 x86_64 randconfig-c007-20220124 arm imote2_defconfig mips tb0219_defconfig mips malta_defconfig powerpc mpc836x_mds_defconfig mips loongson2k_defconfig armneponset_defconfig powerpc kmeter1_defconfig powerpcsocrates_defconfig arm omap1_defconfig powerpc skiroot_defconfig i386 allyesconfig powerpc walnut_defconfig i386 randconfig-a002 i386 randconfig-a006 i386 randconfig-a004 x86_64 randconfig-a011-20220124 x86_64 randconfig-a013-20220124 x86_64 randconfig-a015-20220124 x86_64 randconfig-a016-20220124 x86_64 randconfig-a014-20220124 x86_64 randconfig-a012-20220124 x86_64randconfig-a012 x86_64randconfig-a014 x86_64randconfig-a016 i386 randconfig-a011-20220124 i386 randconfig-a016-20220124 i386 randconfig-a013-20220124 i386 randconfig-a014-20220124 i386 randconfig-a015-20220124 i386 randconfig-a012-20220124 riscvrandconfig-r042-20220124 hexagon randconfig-r045-20220124 hexagon randconfig-r041-20220124 hexagon randconfig-r045-20220125 hexagon randconfig-r041-20220125 riscvrandconfig-r042-20220126 hexagon randconfig-r045-20220126 hexagon randconfig-r041-20220126 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel