[REGRESSION] spi: omap2-mcspi: not working with kernel v6.10

From: João Paulo Gonçalves
Date: Wed Jun 12 2024 - 13:01:37 EST


Hello,

It appears that omap2-mcspi broke on kernel v6.10. I was testing an EEPROM like
SPI FRAM using this DT:

&main_spi1 {
pinctrl-0 = <&pinctrl_spi1>,
<&pinctrl_gpio_4>;
cs-gpios = <&mcu_gpio0 4 GPIO_ACTIVE_LOW>;
status = "okay";

fram@0 {
compatible = "fujitsu,mb85rs256", "atmel,at25";
reg = <0>;
address-width = <16>;
size = <32768>;
spi-max-frequency = <33000000>;
pagesize = <1>;
};
};

On kernel v6.9, spi works fine and is possible to read/write the FRAM. However,
on kernel v6.10-rc3 it gives me an Oops after a timeout:

[ 201.966498] Internal error: Oops: 0000000096000007 [#1] PREEMPT SMP
[ 201.972764] Modules linked in: cfg80211 bluetooth ecdh_generic ecc rfkill
usb_f_ncm u_ether crct10dif_ce powervr drm_gpuvm drm_exec drm_shmem_helper
mux_gpio gpu_sched rtc_ti_k3 k3_j72xx_bandgap rti_wdt tps65219_pwrbutton
ti_ads1015 m_can_platform rtc_ds1307 industrialio_triggered_buffer sa2ul
m_can kfifo_buf lm75 authenc can_dev at24 spi_omap2_mcspi omap_mailbox
libcomposite fuse drm backlight ipv6
[ 202.008216] CPU: 1 PID: 462 Comm: hexdump Not tainted 6.10.0-rc3-00002-g05e382bde33c #1
[ 202.016213] Hardware name: Toradex Verdin AM62 on Ivy Board (DT)
[ 202.022212] pstate: 00000005 (nzcv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[ 202.029167] pc : omap2_mcspi_transfer_one+0x7d8/0xb78 [spi_omap2_mcspi]
[ 202.035790] lr : omap2_mcspi_transfer_one+0x7d4/0xb78 [spi_omap2_mcspi]
[ 202.042397] sp : ffff80008384b7d0
[ 202.045703] x29: ffff80008384b7d0 x28: ffff0000036b0c00 x27: ffff80008328313c
[ 202.052838] x26: ffff00000461cd80 x25: ffff000004625640 x24: ffff00001db00000
[ 202.059971] x23: ffff800083283130 x22: 0000000000000000 x21: 00000000e5c8ed77
[ 202.067103] x20: ffff80008384bb88 x19: 0000000000000000 x18: 0000000000000000
[ 202.074235] x17: 0000000000000000 x16: 0000000000000000 x15: 0000000000000000
[ 202.081367] x14: 00000000000000e6 x13: 0000000000000000 x12: 0000000000000001
[ 202.088499] x11: ffff0000046256c0 x10: 0000000000000aa0 x9 : 0000000020000000
[ 202.095632] x8 : 0000000000000000 x7 : 0000000020161bc4 x6 : ffff00000421e780
[ 202.102765] x5 : 0000000000000000 x4 : ffff8000825e7000 x3 : 00000000ffffa0ff
[ 202.109897] x2 : 0000000000000002 x1 : 0000000000000002 x0 : 0000000000000000
[ 202.117030] Call trace:
[ 202.119471] omap2_mcspi_transfer_one+0x7d8/0xb78 [spi_omap2_mcspi]
[ 202.125734] spi_transfer_one_message+0x2fc/0x648
[ 202.130442] __spi_pump_transfer_message+0x234/0x4e8
[ 202.135401] __spi_sync+0x2a8/0x3c0
[ 202.138885] spi_sync+0x30/0x54
[ 202.142022] at25_ee_read+0x160/0x230
[ 202.145682] nvmem_reg_read+0x24/0x4c
[ 202.149346] bin_attr_nvmem_read+0x84/0xb4
[ 202.153439] sysfs_kf_bin_read+0x6c/0x8c
[ 202.157364] kernfs_fop_read_iter+0xa0/0x1b4
[ 202.161630] vfs_read+0x24c/0x2f4
[ 202.164944] ksys_read+0x6c/0xf8
[ 202.168168] __arm64_sys_read+0x1c/0x28
[ 202.172000] invoke_syscall+0x44/0x108
[ 202.175749] el0_svc_common.constprop.0+0xc0/0xe0
[ 202.180450] do_el0_svc+0x1c/0x28
[ 202.183761] el0_svc+0x34/0xdc
[ 202.186815] el0t_64_sync_handler+0xc0/0xc4
[ 202.190994] el0t_64_sync+0x190/0x194
[ 202.194658] Code: aa1703e0 d2800041 97fffb9f 37f80e40 (b8404700)
[ 202.200746] ---[ end trace 0000000000000000 ]---

Regards,
João Paulo Gonçalves