@@ -335,7 +335,7 @@ static bool cqspi_is_idle(struct cqspi_st *cqspi)
335335{
336336 u32 reg = readl (cqspi -> iobase + CQSPI_REG_CONFIG );
337337
338- return reg & ( 1UL << CQSPI_REG_CONFIG_IDLE_LSB );
338+ return reg & BIT ( CQSPI_REG_CONFIG_IDLE_LSB );
339339}
340340
341341static u32 cqspi_get_rd_sram_level (struct cqspi_st * cqspi )
@@ -571,15 +571,15 @@ static int cqspi_command_read(struct cqspi_flash_pdata *f_pdata,
571571 reg |= (dummy_clk & CQSPI_REG_CMDCTRL_DUMMY_MASK )
572572 << CQSPI_REG_CMDCTRL_DUMMY_LSB ;
573573
574- reg |= ( 0x1 << CQSPI_REG_CMDCTRL_RD_EN_LSB );
574+ reg |= BIT ( CQSPI_REG_CMDCTRL_RD_EN_LSB );
575575
576576 /* 0 means 1 byte. */
577577 reg |= (((n_rx - 1 ) & CQSPI_REG_CMDCTRL_RD_BYTES_MASK )
578578 << CQSPI_REG_CMDCTRL_RD_BYTES_LSB );
579579
580580 /* setup ADDR BIT field */
581581 if (op -> addr .nbytes ) {
582- reg |= ( 0x1 << CQSPI_REG_CMDCTRL_ADDR_EN_LSB );
582+ reg |= BIT ( CQSPI_REG_CMDCTRL_ADDR_EN_LSB );
583583 reg |= ((op -> addr .nbytes - 1 ) &
584584 CQSPI_REG_CMDCTRL_ADD_BYTES_MASK )
585585 << CQSPI_REG_CMDCTRL_ADD_BYTES_LSB ;
@@ -646,7 +646,7 @@ static int cqspi_command_write(struct cqspi_flash_pdata *f_pdata,
646646 reg = opcode << CQSPI_REG_CMDCTRL_OPCODE_LSB ;
647647
648648 if (op -> addr .nbytes ) {
649- reg |= ( 0x1 << CQSPI_REG_CMDCTRL_ADDR_EN_LSB );
649+ reg |= BIT ( CQSPI_REG_CMDCTRL_ADDR_EN_LSB );
650650 reg |= ((op -> addr .nbytes - 1 ) &
651651 CQSPI_REG_CMDCTRL_ADD_BYTES_MASK )
652652 << CQSPI_REG_CMDCTRL_ADD_BYTES_LSB ;
@@ -655,7 +655,7 @@ static int cqspi_command_write(struct cqspi_flash_pdata *f_pdata,
655655 }
656656
657657 if (n_tx ) {
658- reg |= ( 0x1 << CQSPI_REG_CMDCTRL_WR_EN_LSB );
658+ reg |= BIT ( CQSPI_REG_CMDCTRL_WR_EN_LSB );
659659 reg |= ((n_tx - 1 ) & CQSPI_REG_CMDCTRL_WR_BYTES_MASK )
660660 << CQSPI_REG_CMDCTRL_WR_BYTES_LSB ;
661661 data = 0 ;
@@ -719,6 +719,7 @@ static int cqspi_read_setup(struct cqspi_flash_pdata *f_pdata,
719719 reg &= ~CQSPI_REG_SIZE_ADDRESS_MASK ;
720720 reg |= (op -> addr .nbytes - 1 );
721721 writel (reg , reg_base + CQSPI_REG_SIZE );
722+ readl (reg_base + CQSPI_REG_SIZE ); /* Flush posted write. */
722723 return 0 ;
723724}
724725
@@ -764,6 +765,7 @@ static int cqspi_indirect_read_execute(struct cqspi_flash_pdata *f_pdata,
764765 reinit_completion (& cqspi -> transfer_complete );
765766 writel (CQSPI_REG_INDIRECTRD_START_MASK ,
766767 reg_base + CQSPI_REG_INDIRECTRD );
768+ readl (reg_base + CQSPI_REG_INDIRECTRD ); /* Flush posted write. */
767769
768770 while (remaining > 0 ) {
769771 if (use_irq &&
@@ -1062,6 +1064,7 @@ static int cqspi_write_setup(struct cqspi_flash_pdata *f_pdata,
10621064 reg &= ~CQSPI_REG_SIZE_ADDRESS_MASK ;
10631065 reg |= (op -> addr .nbytes - 1 );
10641066 writel (reg , reg_base + CQSPI_REG_SIZE );
1067+ readl (reg_base + CQSPI_REG_SIZE ); /* Flush posted write. */
10651068 return 0 ;
10661069}
10671070
@@ -1090,6 +1093,8 @@ static int cqspi_indirect_write_execute(struct cqspi_flash_pdata *f_pdata,
10901093 reinit_completion (& cqspi -> transfer_complete );
10911094 writel (CQSPI_REG_INDIRECTWR_START_MASK ,
10921095 reg_base + CQSPI_REG_INDIRECTWR );
1096+ readl (reg_base + CQSPI_REG_INDIRECTWR ); /* Flush posted write. */
1097+
10931098 /*
10941099 * As per 66AK2G02 TRM SPRUHY8F section 11.15.5.3 Indirect Access
10951100 * Controller programming sequence, couple of cycles of
@@ -1186,7 +1191,7 @@ static void cqspi_chipselect(struct cqspi_flash_pdata *f_pdata)
11861191 * CS2 to 4b'1011
11871192 * CS3 to 4b'0111
11881193 */
1189- chip_select = 0xF & ~( 1 << chip_select );
1194+ chip_select = 0xF & ~BIT ( chip_select );
11901195 }
11911196
11921197 reg &= ~(CQSPI_REG_CONFIG_CHIPSELECT_MASK
@@ -1272,9 +1277,9 @@ static void cqspi_readdata_capture(struct cqspi_st *cqspi,
12721277 reg = readl (reg_base + CQSPI_REG_READCAPTURE );
12731278
12741279 if (bypass )
1275- reg |= ( 1 << CQSPI_REG_READCAPTURE_BYPASS_LSB );
1280+ reg |= BIT ( CQSPI_REG_READCAPTURE_BYPASS_LSB );
12761281 else
1277- reg &= ~( 1 << CQSPI_REG_READCAPTURE_BYPASS_LSB );
1282+ reg &= ~BIT ( CQSPI_REG_READCAPTURE_BYPASS_LSB );
12781283
12791284 reg &= ~(CQSPI_REG_READCAPTURE_DELAY_MASK
12801285 << CQSPI_REG_READCAPTURE_DELAY_LSB );
@@ -1717,12 +1722,10 @@ static const struct spi_controller_mem_caps cqspi_mem_caps = {
17171722
17181723static int cqspi_setup_flash (struct cqspi_st * cqspi )
17191724{
1720- unsigned int max_cs = cqspi -> num_chipselect - 1 ;
17211725 struct platform_device * pdev = cqspi -> pdev ;
17221726 struct device * dev = & pdev -> dev ;
17231727 struct cqspi_flash_pdata * f_pdata ;
1724- unsigned int cs ;
1725- int ret ;
1728+ int ret , cs , max_cs = -1 ;
17261729
17271730 /* Get flash device data */
17281731 for_each_available_child_of_node_scoped (dev -> of_node , np ) {
@@ -1735,10 +1738,10 @@ static int cqspi_setup_flash(struct cqspi_st *cqspi)
17351738 if (cs >= cqspi -> num_chipselect ) {
17361739 dev_err (dev , "Chip select %d out of range.\n" , cs );
17371740 return - EINVAL ;
1738- } else if (cs < max_cs ) {
1739- max_cs = cs ;
17401741 }
17411742
1743+ max_cs = max_t (int , cs , max_cs );
1744+
17421745 f_pdata = & cqspi -> f_pdata [cs ];
17431746 f_pdata -> cqspi = cqspi ;
17441747 f_pdata -> cs = cs ;
@@ -1748,6 +1751,11 @@ static int cqspi_setup_flash(struct cqspi_st *cqspi)
17481751 return ret ;
17491752 }
17501753
1754+ if (max_cs < 0 ) {
1755+ dev_err (dev , "No flash device declared\n" );
1756+ return - ENODEV ;
1757+ }
1758+
17511759 cqspi -> num_chipselect = max_cs + 1 ;
17521760 return 0 ;
17531761}
0 commit comments