static int spi_aic3254_probe(struct spi_device *aic3254) { pr_aud_info("%s\n", __func__); codec_dev = aic3254; /* Boot up */ #if 0 aic3254_config(CODEC_INIT_REG, ARRAY_SIZE(CODEC_INIT_REG)); aic3254_config(CODEC_DOWNLINK_OFF, ARRAY_SIZE(CODEC_DOWNLINK_OFF)); aic3254_config(CODEC_UPLINK_OFF, ARRAY_SIZE(CODEC_UPLINK_OFF)); aic3254_config(CODEC_POWER_OFF, ARRAY_SIZE(CODEC_POWER_OFF)); #endif aic3254_tx_mode = UPLINK_OFF; aic3254_rx_mode = DOWNLINK_OFF; /* request space for firmware data of AIC3254 */ aic3254_uplink = init_2d_array(IO_CTL_ROW_MAX, IO_CTL_COL_MAX); aic3254_downlink = init_2d_array(IO_CTL_ROW_MAX, IO_CTL_COL_MAX); aic3254_minidsp = init_2d_array(MINIDSP_ROW_MAX, MINIDSP_COL_MAX); bulk_tx = kcalloc(MINIDSP_COL_MAX * 2 , sizeof(uint8_t), GFP_KERNEL); spin_lock_init(&spinlock); return 0; }
static int __devinit aic3008_probe(struct snd_soc_codec *codec) { AUD_INFO("aic3008_probe() start... aic3008_codec:%p", codec); int ret = 0; struct aic3008_priv *aic3008 = snd_soc_codec_get_drvdata(codec); aic3008->codec = codec; aic3008->codec->control_data = (void *)codec_spi_dev; if (!aic3008) { AUD_ERR("%s: Codec not registered, SPI device not yet probed\n", &aic3008->codec->name); return -ENODEV; } aic3008_sw_reset(codec); // local call to reset codec aic3008_set_bias_level(codec, SND_SOC_BIAS_STANDBY); // request space for SPI commands data of AIC3008 aic3008_uplink = init_2d_array(IO_CTL_ROW_MAX, IO_CTL_COL_MAX); aic3008_downlink = init_2d_array(IO_CTL_ROW_MAX, IO_CTL_COL_MAX); aic3008_minidsp = init_2d_array(MINIDSP_ROW_MAX, MINIDSP_COL_MAX); bulk_tx = kcalloc(MINIDSP_COL_MAX * 2 , sizeof(uint8_t), GFP_KERNEL); AUD_INFO("Audio Codec Driver init complete in %lld ms\n", ktime_to_ms(ktime_get()) - drv_up_time); return ret; }
int main(void) { init_2d_array(); for(int i = 0; i<X; i++) { for(int j = 0; j<Y; j++) { fill_2d_array(i, j , (i+j)); } } for(int i = 0; i<X; i++) { for(int j = 0; j<Y; j++) { printf("arr[%d][%d] = %d\n", i, j, access_2d_array(i, j)); } } return EXIT_SUCCESS; }