예제 #1
0
/* 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);
}
예제 #2
0
/* 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);
    }
예제 #3
0
/* 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);
    }
}
예제 #4
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);
}
예제 #5
0
/* 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);
	}
}
예제 #6
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);
}
예제 #7
0
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);
}