From mboxrd@z Thu Jan 1 00:00:00 1970 From: Marek Vasut Date: Mon, 29 Mar 2021 04:40:19 +0200 Subject: [PATCH V2] spi: Update speed/mode on change In-Reply-To: References: <20210226142124.56305-1-marex@denx.de> <20210328213055.GB1310@bill-the-cat> <20210329015921.GF1310@bill-the-cat> Message-ID: <919bbb15-bdc8-1727-3333-01bed29ec333@denx.de> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On 3/29/21 4:09 AM, Marek Vasut wrote: > On 3/29/21 3:59 AM, Tom Rini wrote: >> On Mon, Mar 29, 2021 at 03:32:51AM +0200, Marek Vasut wrote: >>> On 3/28/21 11:30 PM, Tom Rini wrote: >>>> On Fri, Feb 26, 2021 at 03:21:24PM +0100, Marek Vasut wrote: >>>> >>>>> The spi_get_bus_and_cs() may be called on the same bus and chipselect >>>>> with different frequency or mode. This is valid usecase, but the code >>>>> fails to notify the controller of such a configuration change. Call >>>>> spi_set_speed_mode() in case bus frequency or bus mode changed to let >>>>> the controller update the configuration. >>>>> >>>>> The problem can easily be triggered using the sspi command: >>>>> => sspi 0:0 at 1000 >>>>> => sspi 0:0 at 2000 >>>>> Without this patch, both transfers happen at 1000 Hz. With this patch, >>>>> the later transfer happens correctly at 2000 Hz. >>>>> >>>>> Signed-off-by: Marek Vasut >>>>> Cc: Jagan Teki >>>>> Cc: Patrick Delaunay >>>> >>>> So, very reliably I can make: >>>> https://source.denx.de/u-boot/u-boot/-/jobs/245517 >>>> happen locally as well building with clang.? It's not obvious to me why >>>> the test now fails however. >>> >>> Can you please be more specific / clear ? I have no idea what those 300 >>> lines of cryptic output mean, nor what are you trying to say by the >>> above, >>> sorry. >> >> If you build with clang, for sandbox, and run the tests, U-Boot crashes >> in the unit tests that you start with "ut dm". > > And that is related to this patch somehow ? How ? ... after further discussion off-list to get a better test case description ... It seems the problem is in sound_beep() and it is unrelated to this patch, as the same problem happens with / without this patch being applied, on: a7d3ac61482 ("Merge branch '2021-03-28-assorted-bugfixes'") $ clang --version Debian clang version 11.0.1-2 ... $ make CC=clang HOSTCC=clang sandbox_defconfig $ make CC=clang HOSTCC=clang $ gdb --args ./u-boot -d arch/sandbox/dts/test.dtb => ut dm ... Program received signal SIGSEGV, Segmentation fault. dlfree (mem=, mem at entry=0x15c19c50) at common/dlmalloc.c:1623 1623 if (!(inuse_bit_at_offset(next, nextsz))) /* consolidate forward */ (gdb) bt #0 dlfree (mem=, mem at entry=0x15c19c50) at common/dlmalloc.c:1623 #1 0x00000000004759e3 in sound_beep (dev=0x15c05580, msecs=, frequency_hz=100) at drivers/sound/sound-uclass.c:118 #2 0x000000000055e083 in dm_test_sound (uts=0x652400 ) at test/dm/sound.c:28 #3 0x0000000000514c4d in dm_do_test (uts=0x652400 , test=test at entry=0x621520 <_u_boot_list_2_dm_test_2_dm_test_sound>, of_live=) at test/dm/test-main.c:107 #4 0x00000000005147a4 in dm_test_main (test_name=0x0) at test/dm/test-main.c:189 #5 0x00000000004420c8 in cmd_call (cmdtp=0x61ebf8 <_u_boot_list_2_cmd_2_ut>, flag=, argc=2, argv=0x15bd63d0, repeatable=0x7fffffffda34) at common/command.c:580 #6 cmd_process (flag=, flag at entry=0, argc=, argv=0x15bd63d0, repeatable=0x63b97c , ticks=ticks at entry=0x0) at common/command.c:635 #7 0x000000000042c574 in run_pipe_real (pi=0x15bd6300) at common/cli_hush.c:1676 #8 run_list_real (pi=, pi at entry=0x15bd6300) at common/cli_hush.c:1873 #9 0x000000000042b415 in run_list (pi=0x15bd6300) at common/cli_hush.c:2022 #10 parse_stream_outer (inp=inp at entry=0x7fffffffdbe8, flag=, flag at entry=2) at common/cli_hush.c:3206 #11 0x000000000042b57a in parse_file_outer () at common/cli_hush.c:3289 #12 0x0000000000441517 in cli_loop () at common/cli.c:230 #13 0x000000000042a0ad in main_loop () at common/main.c:66 #14 0x000000000042d57e in run_main_loop () at common/board_r.c:588 #15 0x000000000042d32e in initcall_run_list (init_sequence=) at /u-boot/include/initcall.h:46 #16 board_init_r (new_gd=, dest_addr=dest_addr at entry=0) at common/board_r.c:830 #17 0x0000000000403a85 in main (argc=3, argv=0x7fffffffdfa8) at arch/sandbox/cpu/start.c:498