/* Chip select operation functions for cs_change flag */ static void cs_active(struct driver_data *drv_data, struct chip_data *chip) { u16 flag = read_FLAG(drv_data); flag |= chip->flag; flag &= ~(chip->flag << 8); write_FLAG(drv_data, flag); }
/* enable or disable the pin muxed by GPIO and SPI CS to work as SPI CS */ static inline void bfin_spi_cs_enable(struct bfin_spi_master_data *drv_data, struct bfin_spi_slave_data *chip) { if (chip->chip_select_num < MAX_CTRL_CS) { u16 flag = read_FLAG(drv_data); flag |= (chip->flag >> 8); write_FLAG(drv_data, flag); }
/* Chip select operation functions for cs_change flag */ static void bfin_spi_cs_active(struct bfin_spi_master_data *drv_data, struct bfin_spi_slave_data *chip) { if (likely(chip->chip_select_num < MAX_CTRL_CS)) { u16 flag = read_FLAG(drv_data); flag &= ~chip->flag; write_FLAG(drv_data, flag); } else { gpio_set_value(chip->cs_gpio, 0); } }
static void cs_deactive(struct driver_data *drv_data, struct chip_data *chip) { u16 flag = read_FLAG(drv_data); flag |= (chip->flag << 8); write_FLAG(drv_data, flag); /* Move delay here for consistency */ if (chip->cs_chg_udelay) udelay(chip->cs_chg_udelay); }
/* Chip select operation functions for cs_change flag */ static void bfin_spi_cs_active(struct driver_data *drv_data, struct chip_data *chip) { if (likely(chip->chip_select_num)) { u16 flag = read_FLAG(drv_data); flag |= chip->flag; flag &= ~(chip->flag << 8); write_FLAG(drv_data, flag); } else { gpio_set_value(chip->cs_gpio, 0); } }
static void bfin_spi_cs_deactive(struct driver_data *drv_data, struct chip_data *chip) { if (likely(chip->chip_select_num)) { u16 flag = read_FLAG(drv_data); flag &= ~chip->flag; flag |= (chip->flag << 8); write_FLAG(drv_data, flag); } else { gpio_set_value(chip->cs_gpio, 1); } /* Move delay here for consistency */ if (chip->cs_chg_udelay) udelay(chip->cs_chg_udelay); }
static void bfin_spi_cs_deactive(struct bfin_spi_master_data *drv_data, struct bfin_spi_slave_data *chip) { if (likely(chip->chip_select_num < MAX_CTRL_CS)) { u16 flag = read_FLAG(drv_data); flag |= chip->flag; write_FLAG(drv_data, flag); } else { gpio_set_value(chip->cs_gpio, 1); } /* Move delay here for consistency */ if (chip->cs_chg_udelay) udelay(chip->cs_chg_udelay); }