Hallo I want to access to another CPU/FPGA over GPMC interface.
On chipselect0 I want to access the other device.
-> to Addresse 0x0800 0000 with size of 1MB .. 2MB
Does the gpmc driver provide a linux device?
How can I now access the area defined in the DTS?
The interface should be a asynchronous parallel bus.
The connection-schemata:
gpmc_a{20:1} ===========20bit==========> address{20:1}
gpmc_ad{15:0} <===========16bit==========> data{15:0}
gpmc_ben{1:0} ===========2bit==========> ben{1:0}
gpmc_cs0 --------------------------------------> ncs
gpmc_oen_ren ---------------------------------------> ren
gpmc_wen .--------------------------------------------> wen
gpmc_wait0 <---------------------------------------------- finish
Here is the dmesg output (I have gpmc debug activated):
[ 1.252205] omap-gpmc 50000000.gpmc: GPMC revision 6.0
[ 1.258160] gpmc cs0 before gpmc_cs_program_settings:
[ 1.263347] cs0 GPMC_CS_CONFIG1: 0x00000000
[ 1.267638] cs0 GPMC_CS_CONFIG2: 0x00101001
[ 1.271928] cs0 GPMC_CS_CONFIG3: 0x22060514
[ 1.276214] cs0 GPMC_CS_CONFIG4: 0x10057016
[ 1.280503] cs0 GPMC_CS_CONFIG5: 0x010f1111
[ 1.284789] cs0 GPMC_CS_CONFIG6: 0x8f070000
[ 1.289077] gpmc cs0 access configuration:
[ 1.293288] gpmc,mux-add-data = <0>;
[ 1.296952] gpmc,device-width = <1>;
[ 1.300616] gpmc,wait-pin = <0>;
[ 1.303926] gpmc,burst-length = <4>;
[ 1.307590] gpmc cs0 timings configuration:
[ 1.311881] gpmc,cs-on-ns = <3>; /* 1 ns - 3 ns; 1 ticks */
[ 1.317598] gpmc,cs-rd-off-ns = <60>; /* 57 ns - 60 ns; 16 ticks */
[ 1.324030] gpmc,cs-wr-off-ns = <60>; /* 57 ns - 60 ns; 16 ticks */
[ 1.330458] gpmc,adv-on-ns = <15>; /* 12 ns - 15 ns; 4 ticks */
[ 1.336555] gpmc,adv-rd-off-ns = <18>; /* 16 ns - 18 ns; 5 ticks */
[ 1.342984] gpmc,adv-wr-off-ns = <22>; /* 19 ns - 22 ns; 6 ticks */
[ 1.349410] gpmc,adv-aad-mux-on-ns = <3>; /* 1 ns - 3 ns; 1 ticks */
[ 1.355930] gpmc,adv-aad-mux-rd-off-ns = <7>; /* 4 ns - 7 ns; 2 ticks */
[ 1.362821] gpmc,adv-aad-mux-wr-off-ns = <7>; /* 4 ns - 7 ns; 2 ticks */
[ 1.369694] gpmc,oe-on-ns = <22>; /* 19 ns - 22 ns; 6 ticks */
[ 1.375679] gpmc,oe-off-ns = <60>; /* 57 ns - 60 ns; 16 ticks */
[ 1.381860] gpmc,oe-aad-mux-on-ns = <3>; /* 1 ns - 3 ns; 1 ticks */
[ 1.388286] gpmc,oe-aad-mux-off-ns = <11>; /* 8 ns - 11 ns; 3 ticks */
[ 1.394987] gpmc,we-on-ns = <18>; /* 16 ns - 18 ns; 5 ticks */
[ 1.400970] gpmc,we-off-ns = <60>; /* 57 ns - 60 ns; 16 ticks */
[ 1.407135] gpmc,rd-cycle-ns = <63>; /* 61 ns - 63 ns; 17 ticks */
[ 1.413490] gpmc,wr-cycle-ns = <63>; /* 61 ns - 63 ns; 17 ticks */
[ 1.419828] gpmc,access-ns = <56>; /* 53 ns - 56 ns; 15 ticks */
[ 1.425993] gpmc,page-burst-access-ns = <3>; /* 1 ns - 3 ns; 1 ticks */
[ 1.432797] gpmc,bus-turnaround-ns = <0>; /* 0 ns - 0 ns; 0 ticks */
[ 1.439312] gpmc,cycle2cycle-delay-ns = <0>; /* 0 ns - 0 ns; 0 ticks */
[ 1.446102] gpmc,wait-monitoring-ns = <0>; /* 0 ns - 0 ns; 0 ticks */
[ 1.452726] gpmc,clk-activation-ns = <0>; /* 0 ns - 0 ns; 0 ticks */
[ 1.459244] gpmc,wr-data-mux-bus-ns = <26>; /* 23 ns - 26 ns; 7 ticks */
[ 1.466151] gpmc,wr-access-ns = <56>; /* 53 ns - 56 ns; 15 ticks */
[ 1.472582] GPMC CS0: cs_on : 1 ticks, 3 ns (was 1 ticks) 3 ns
[ 1.480257] GPMC CS0: cs_rd_off : 16 ticks, 60 ns (was 16 ticks) 60 ns
[ 1.487932] GPMC CS0: cs_wr_off : 16 ticks, 60 ns (was 16 ticks) 60 ns
[ 1.495626] GPMC CS0: adv_on : 4 ticks, 15 ns (was 4 ticks) 15 ns
[ 1.503321] GPMC CS0: adv_rd_off : 16 ticks, 60 ns (was 5 ticks) 60 ns
[ 1.510997] GPMC CS0: adv_wr_off : 16 ticks, 60 ns (was 6 ticks) 60 ns
[ 1.518675] GPMC CS0: adv_aad_mux_on : 1 ticks, 3 ns (was 1 ticks) 3 ns
[ 1.526370] GPMC CS0: adv_aad_mux_rd_off: 2 ticks, 7 ns (was 2 ticks) 7 ns
[ 1.534152] GPMC CS0: adv_aad_mux_wr_off: 2 ticks, 7 ns (was 2 ticks) 7 ns
[ 1.541932] GPMC CS0: oe_on : 2 ticks, 7 ns (was 6 ticks) 6 ns
[ 1.549608] GPMC CS0: oe_off : 16 ticks, 60 ns (was 16 ticks) 60 ns
[ 1.557286] GPMC CS0: oe_aad_mux_on : 1 ticks, 3 ns (was 1 ticks) 3 ns
[ 1.564982] GPMC CS0: oe_aad_mux_off : 3 ticks, 11 ns (was 3 ticks) 11 ns
[ 1.572673] GPMC CS0: we_on : 5 ticks, 18 ns (was 5 ticks) 18 ns
[ 1.580349] GPMC CS0: we_off : 16 ticks, 60 ns (was 16 ticks) 60 ns
[ 1.588029] GPMC CS0: rd_cycle : 17 ticks, 63 ns (was 17 ticks) 63 ns
[ 1.595737] GPMC CS0: wr_cycle : 17 ticks, 63 ns (was 17 ticks) 63 ns
[ 1.603416] GPMC CS0: access : 15 ticks, 56 ns (was 15 ticks) 56 ns
[ 1.611091] GPMC CS0: page_burst_access: 0 ticks, 0 ns (was 1 ticks) 0 ns
[ 1.618769] GPMC CS0: bus_turnaround : 0 ticks, 0 ns (was 0 ticks) 0 ns
[ 1.626463] GPMC CS0: cycle2cycle_delay: 0 ticks, 0 ns (was 0 ticks) 0 ns
[ 1.634155] GPMC CS0: wr_data_mux_bus : 7 ticks, 26 ns (was 7 ticks) 26 ns
[ 1.641849] GPMC CS0: wr_access : 15 ticks, 56 ns (was 15 ticks) 56 ns
[ 1.649523] GPMC CS0: wait_monitoring : 0 ticks, 0 ns (was 0 ticks) 0 ns
[ 1.657202] GPMC CS0: clk_activation : 0 ticks, 0 ns (was 0 ticks) 0 ns
[ 1.664895] GPMC CS0 CLK period is 3 ns (div 1)
[ 1.669540] gpmc cs0 after gpmc_cs_set_timings:
[ 1.674189] cs0 GPMC_CS_CONFIG1: 0xf8601010
[ 1.678477] cs0 GPMC_CS_CONFIG2: 0x00101081
[ 1.682773] cs0 GPMC_CS_CONFIG3: 0x22101094
[ 1.687059] cs0 GPMC_CS_CONFIG4: 0x10857092
[ 1.691346] cs0 GPMC_CS_CONFIG5: 0x000f1111
[ 1.695633] cs0 GPMC_CS_CONFIG6: 0x8f0700c0
[ 1.699920] gpmc cs0 access configuration:
[ 1.704128] gpmc,time-para-granularity = <1>;
[ 1.708593] gpmc,mux-add-data = <0>;
[ 1.712266] gpmc,device-width = <2>;
[ 1.715928] gpmc,wait-pin = <0>;
[ 1.719235] gpmc,wait-on-write = <1>;
[ 1.723005] gpmc,wait-on-read = <1>;
[ 1.726667] gpmc,burst-length = <4>;
[ 1.730330] gpmc,sync-write = <1>;
[ 1.733814] gpmc,burst-write = <1>;
[ 1.737389] gpmc,gpmc,sync-read = <1>;
[ 1.741229] gpmc,burst-read = <1>;
[ 1.744713] gpmc,burst-wrap = <1>;
[ 1.748197] gpmc,cs-extra-delay = <1>;
[ 1.752039] gpmc,adv-extra-delay = <1>;
[ 1.755968] gpmc,we-extra-delay = <1>;
[ 1.759809] gpmc,oe-extra-delay = <1>;
[ 1.763649] gpmc,cycle2cycle-samecsen = <1>;
[ 1.768023] gpmc,cycle2cycle-diffcsen = <1>;
[ 1.772412] gpmc cs0 timings configuration:
[ 1.776705] gpmc,cs-on-ns = <3>; /* 1 ns - 3 ns; 1 ticks */
[ 1.782423] gpmc,cs-rd-off-ns = <60>; /* 57 ns - 60 ns; 16 ticks */
[ 1.788850] gpmc,cs-wr-off-ns = <60>; /* 57 ns - 60 ns; 16 ticks */
[ 1.795283] gpmc,adv-on-ns = <15>; /* 12 ns - 15 ns; 4 ticks */
[ 1.801353] gpmc,adv-rd-off-ns = <60>; /* 57 ns - 60 ns; 16 ticks */
[ 1.807873] gpmc,adv-wr-off-ns = <60>; /* 57 ns - 60 ns; 16 ticks */
[ 1.814409] gpmc,adv-aad-mux-on-ns = <3>; /* 1 ns - 3 ns; 1 ticks */
[ 1.820927] gpmc,adv-aad-mux-rd-off-ns = <7>; /* 4 ns - 7 ns; 2 ticks */
[ 1.827804] gpmc,adv-aad-mux-wr-off-ns = <7>; /* 4 ns - 7 ns; 2 ticks */
[ 1.834696] gpmc,oe-on-ns = <7>; /* 4 ns - 7 ns; 2 ticks */
[ 1.840411] gpmc,oe-off-ns = <60>; /* 57 ns - 60 ns; 16 ticks */
[ 1.846577] gpmc,oe-aad-mux-on-ns = <3>; /* 1 ns - 3 ns; 1 ticks */
[ 1.853040] gpmc,oe-aad-mux-off-ns = <11>; /* 8 ns - 11 ns; 3 ticks */
[ 1.859732] gpmc,we-on-ns = <18>; /* 16 ns - 18 ns; 5 ticks */
[ 1.865712] gpmc,we-off-ns = <60>; /* 57 ns - 60 ns; 16 ticks */
[ 1.871885] gpmc,rd-cycle-ns = <63>; /* 61 ns - 63 ns; 17 ticks */
[ 1.878223] gpmc,wr-cycle-ns = <63>; /* 61 ns - 63 ns; 17 ticks */
[ 1.884567] gpmc,access-ns = <56>; /* 53 ns - 56 ns; 15 ticks */
[ 1.890726] gpmc,page-burst-access-ns = <0>; /* 0 ns - 0 ns; 0 ticks */
[ 1.897515] gpmc,bus-turnaround-ns = <0>; /* 0 ns - 0 ns; 0 ticks */
[ 1.904052] gpmc,cycle2cycle-delay-ns = <0>; /* 0 ns - 0 ns; 0 ticks */
[ 1.910831] gpmc,wait-monitoring-ns = <0>; /* 0 ns - 0 ns; 0 ticks */
[ 1.917443] gpmc,clk-activation-ns = <0>; /* 0 ns - 0 ns; 0 ticks */
[ 1.923981] gpmc,wr-data-mux-bus-ns = <26>; /* 23 ns - 26 ns; 7 ticks */
[ 1.930853] gpmc,wr-access-ns = <56>; /* 53 ns - 56 ns; 15 ticks */
[ 1.943328] hw-breakpoint: found 5 (+1 reserved) breakpoint and 4 watchpoint registers.