2222#include "pcie-plda.h"
2323
2424/* Number of MSI IRQs */
25- #define MC_MAX_NUM_MSI_IRQS 32
25+ #define PLDA_MAX_NUM_MSI_IRQS 32
2626
2727/* PCIe Bridge Phy and Controller Phy offsets */
2828#define MC_PCIE1_BRIDGE_ADDR 0x00008000u
@@ -179,25 +179,29 @@ struct event_map {
179179 u32 event_bit ;
180180};
181181
182- struct mc_msi {
182+ struct plda_msi {
183183 struct mutex lock ; /* Protect used bitmap */
184184 struct irq_domain * msi_domain ;
185185 struct irq_domain * dev_domain ;
186186 u32 num_vectors ;
187187 u64 vector_phy ;
188- DECLARE_BITMAP (used , MC_MAX_NUM_MSI_IRQS );
188+ DECLARE_BITMAP (used , PLDA_MAX_NUM_MSI_IRQS );
189189};
190190
191- struct mc_pcie {
192- void __iomem * axi_base_addr ;
191+ struct plda_pcie_rp {
193192 struct device * dev ;
194193 struct irq_domain * intx_domain ;
195194 struct irq_domain * event_domain ;
196195 raw_spinlock_t lock ;
197- struct mc_msi msi ;
196+ struct plda_msi msi ;
198197 void __iomem * bridge_addr ;
199198};
200199
200+ struct mc_pcie {
201+ struct plda_pcie_rp plda ;
202+ void __iomem * axi_base_addr ;
203+ };
204+
201205struct cause {
202206 const char * sym ;
203207 const char * str ;
@@ -313,7 +317,7 @@ static struct mc_pcie *port;
313317
314318static void mc_pcie_enable_msi (struct mc_pcie * port , void __iomem * ecam )
315319{
316- struct mc_msi * msi = & port -> msi ;
320+ struct plda_msi * msi = & port -> plda . msi ;
317321 u16 reg ;
318322 u8 queue_size ;
319323
@@ -336,10 +340,10 @@ static void mc_pcie_enable_msi(struct mc_pcie *port, void __iomem *ecam)
336340
337341static void mc_handle_msi (struct irq_desc * desc )
338342{
339- struct mc_pcie * port = irq_desc_get_handler_data (desc );
343+ struct plda_pcie_rp * port = irq_desc_get_handler_data (desc );
340344 struct irq_chip * chip = irq_desc_get_chip (desc );
341345 struct device * dev = port -> dev ;
342- struct mc_msi * msi = & port -> msi ;
346+ struct plda_msi * msi = & port -> msi ;
343347 void __iomem * bridge_base_addr = port -> bridge_addr ;
344348 unsigned long status ;
345349 u32 bit ;
@@ -364,7 +368,7 @@ static void mc_handle_msi(struct irq_desc *desc)
364368
365369static void mc_msi_bottom_irq_ack (struct irq_data * data )
366370{
367- struct mc_pcie * port = irq_data_get_irq_chip_data (data );
371+ struct plda_pcie_rp * port = irq_data_get_irq_chip_data (data );
368372 void __iomem * bridge_base_addr = port -> bridge_addr ;
369373 u32 bitpos = data -> hwirq ;
370374
@@ -373,7 +377,7 @@ static void mc_msi_bottom_irq_ack(struct irq_data *data)
373377
374378static void mc_compose_msi_msg (struct irq_data * data , struct msi_msg * msg )
375379{
376- struct mc_pcie * port = irq_data_get_irq_chip_data (data );
380+ struct plda_pcie_rp * port = irq_data_get_irq_chip_data (data );
377381 phys_addr_t addr = port -> msi .vector_phy ;
378382
379383 msg -> address_lo = lower_32_bits (addr );
@@ -400,8 +404,8 @@ static struct irq_chip mc_msi_bottom_irq_chip = {
400404static int mc_irq_msi_domain_alloc (struct irq_domain * domain , unsigned int virq ,
401405 unsigned int nr_irqs , void * args )
402406{
403- struct mc_pcie * port = domain -> host_data ;
404- struct mc_msi * msi = & port -> msi ;
407+ struct plda_pcie_rp * port = domain -> host_data ;
408+ struct plda_msi * msi = & port -> msi ;
405409 unsigned long bit ;
406410
407411 mutex_lock (& msi -> lock );
@@ -425,8 +429,8 @@ static void mc_irq_msi_domain_free(struct irq_domain *domain, unsigned int virq,
425429 unsigned int nr_irqs )
426430{
427431 struct irq_data * d = irq_domain_get_irq_data (domain , virq );
428- struct mc_pcie * port = irq_data_get_irq_chip_data (d );
429- struct mc_msi * msi = & port -> msi ;
432+ struct plda_pcie_rp * port = irq_data_get_irq_chip_data (d );
433+ struct plda_msi * msi = & port -> msi ;
430434
431435 mutex_lock (& msi -> lock );
432436
@@ -456,11 +460,11 @@ static struct msi_domain_info mc_msi_domain_info = {
456460 .chip = & mc_msi_irq_chip ,
457461};
458462
459- static int mc_allocate_msi_domains (struct mc_pcie * port )
463+ static int mc_allocate_msi_domains (struct plda_pcie_rp * port )
460464{
461465 struct device * dev = port -> dev ;
462466 struct fwnode_handle * fwnode = of_node_to_fwnode (dev -> of_node );
463- struct mc_msi * msi = & port -> msi ;
467+ struct plda_msi * msi = & port -> msi ;
464468
465469 mutex_init (& port -> msi .lock );
466470
@@ -484,7 +488,7 @@ static int mc_allocate_msi_domains(struct mc_pcie *port)
484488
485489static void mc_handle_intx (struct irq_desc * desc )
486490{
487- struct mc_pcie * port = irq_desc_get_handler_data (desc );
491+ struct plda_pcie_rp * port = irq_desc_get_handler_data (desc );
488492 struct irq_chip * chip = irq_desc_get_chip (desc );
489493 struct device * dev = port -> dev ;
490494 void __iomem * bridge_base_addr = port -> bridge_addr ;
@@ -511,7 +515,7 @@ static void mc_handle_intx(struct irq_desc *desc)
511515
512516static void mc_ack_intx_irq (struct irq_data * data )
513517{
514- struct mc_pcie * port = irq_data_get_irq_chip_data (data );
518+ struct plda_pcie_rp * port = irq_data_get_irq_chip_data (data );
515519 void __iomem * bridge_base_addr = port -> bridge_addr ;
516520 u32 mask = BIT (data -> hwirq + PM_MSI_INT_INTX_SHIFT );
517521
@@ -520,7 +524,7 @@ static void mc_ack_intx_irq(struct irq_data *data)
520524
521525static void mc_mask_intx_irq (struct irq_data * data )
522526{
523- struct mc_pcie * port = irq_data_get_irq_chip_data (data );
527+ struct plda_pcie_rp * port = irq_data_get_irq_chip_data (data );
524528 void __iomem * bridge_base_addr = port -> bridge_addr ;
525529 unsigned long flags ;
526530 u32 mask = BIT (data -> hwirq + PM_MSI_INT_INTX_SHIFT );
@@ -535,7 +539,7 @@ static void mc_mask_intx_irq(struct irq_data *data)
535539
536540static void mc_unmask_intx_irq (struct irq_data * data )
537541{
538- struct mc_pcie * port = irq_data_get_irq_chip_data (data );
542+ struct plda_pcie_rp * port = irq_data_get_irq_chip_data (data );
539543 void __iomem * bridge_base_addr = port -> bridge_addr ;
540544 unsigned long flags ;
541545 u32 mask = BIT (data -> hwirq + PM_MSI_INT_INTX_SHIFT );
@@ -625,21 +629,22 @@ static u32 local_events(struct mc_pcie *port)
625629 return val ;
626630}
627631
628- static u32 get_events (struct mc_pcie * port )
632+ static u32 get_events (struct plda_pcie_rp * port )
629633{
634+ struct mc_pcie * mc_port = container_of (port , struct mc_pcie , plda );
630635 u32 events = 0 ;
631636
632- events |= pcie_events (port );
633- events |= sec_errors (port );
634- events |= ded_errors (port );
635- events |= local_events (port );
637+ events |= pcie_events (mc_port );
638+ events |= sec_errors (mc_port );
639+ events |= ded_errors (mc_port );
640+ events |= local_events (mc_port );
636641
637642 return events ;
638643}
639644
640645static irqreturn_t mc_event_handler (int irq , void * dev_id )
641646{
642- struct mc_pcie * port = dev_id ;
647+ struct plda_pcie_rp * port = dev_id ;
643648 struct device * dev = port -> dev ;
644649 struct irq_data * data ;
645650
@@ -655,7 +660,7 @@ static irqreturn_t mc_event_handler(int irq, void *dev_id)
655660
656661static void mc_handle_event (struct irq_desc * desc )
657662{
658- struct mc_pcie * port = irq_desc_get_handler_data (desc );
663+ struct plda_pcie_rp * port = irq_desc_get_handler_data (desc );
659664 unsigned long events ;
660665 u32 bit ;
661666 struct irq_chip * chip = irq_desc_get_chip (desc );
@@ -672,12 +677,13 @@ static void mc_handle_event(struct irq_desc *desc)
672677
673678static void mc_ack_event_irq (struct irq_data * data )
674679{
675- struct mc_pcie * port = irq_data_get_irq_chip_data (data );
680+ struct plda_pcie_rp * port = irq_data_get_irq_chip_data (data );
681+ struct mc_pcie * mc_port = container_of (port , struct mc_pcie , plda );
676682 u32 event = data -> hwirq ;
677683 void __iomem * addr ;
678684 u32 mask ;
679685
680- addr = port -> axi_base_addr + event_descs [event ].base +
686+ addr = mc_port -> axi_base_addr + event_descs [event ].base +
681687 event_descs [event ].offset ;
682688 mask = event_descs [event ].mask ;
683689 mask |= event_descs [event ].enb_mask ;
@@ -687,13 +693,14 @@ static void mc_ack_event_irq(struct irq_data *data)
687693
688694static void mc_mask_event_irq (struct irq_data * data )
689695{
690- struct mc_pcie * port = irq_data_get_irq_chip_data (data );
696+ struct plda_pcie_rp * port = irq_data_get_irq_chip_data (data );
697+ struct mc_pcie * mc_port = container_of (port , struct mc_pcie , plda );
691698 u32 event = data -> hwirq ;
692699 void __iomem * addr ;
693700 u32 mask ;
694701 u32 val ;
695702
696- addr = port -> axi_base_addr + event_descs [event ].base +
703+ addr = mc_port -> axi_base_addr + event_descs [event ].base +
697704 event_descs [event ].mask_offset ;
698705 mask = event_descs [event ].mask ;
699706 if (event_descs [event ].enb_mask ) {
@@ -717,13 +724,14 @@ static void mc_mask_event_irq(struct irq_data *data)
717724
718725static void mc_unmask_event_irq (struct irq_data * data )
719726{
720- struct mc_pcie * port = irq_data_get_irq_chip_data (data );
727+ struct plda_pcie_rp * port = irq_data_get_irq_chip_data (data );
728+ struct mc_pcie * mc_port = container_of (port , struct mc_pcie , plda );
721729 u32 event = data -> hwirq ;
722730 void __iomem * addr ;
723731 u32 mask ;
724732 u32 val ;
725733
726- addr = port -> axi_base_addr + event_descs [event ].base +
734+ addr = mc_port -> axi_base_addr + event_descs [event ].base +
727735 event_descs [event ].mask_offset ;
728736 mask = event_descs [event ].mask ;
729737
@@ -811,7 +819,7 @@ static int mc_pcie_init_clks(struct device *dev)
811819 return 0 ;
812820}
813821
814- static int mc_pcie_init_irq_domains (struct mc_pcie * port )
822+ static int mc_pcie_init_irq_domains (struct plda_pcie_rp * port )
815823{
816824 struct device * dev = port -> dev ;
817825 struct device_node * node = dev -> of_node ;
@@ -889,7 +897,7 @@ static void mc_pcie_setup_window(void __iomem *bridge_base_addr, u32 index,
889897}
890898
891899static int mc_pcie_setup_windows (struct platform_device * pdev ,
892- struct mc_pcie * port )
900+ struct plda_pcie_rp * port )
893901{
894902 void __iomem * bridge_base_addr = port -> bridge_addr ;
895903 struct pci_host_bridge * bridge = platform_get_drvdata (pdev );
@@ -970,7 +978,7 @@ static void mc_disable_interrupts(struct mc_pcie *port)
970978 writel_relaxed (GENMASK (31 , 0 ), bridge_base_addr + ISTATUS_HOST );
971979}
972980
973- static int mc_init_interrupts (struct platform_device * pdev , struct mc_pcie * port )
981+ static int mc_init_interrupts (struct platform_device * pdev , struct plda_pcie_rp * port )
974982{
975983 struct device * dev = & pdev -> dev ;
976984 int irq ;
@@ -1043,12 +1051,12 @@ static int mc_platform_init(struct pci_config_window *cfg)
10431051 mc_pcie_enable_msi (port , cfg -> win );
10441052
10451053 /* Configure non-config space outbound ranges */
1046- ret = mc_pcie_setup_windows (pdev , port );
1054+ ret = mc_pcie_setup_windows (pdev , & port -> plda );
10471055 if (ret )
10481056 return ret ;
10491057
10501058 /* Address translation is up; safe to enable interrupts */
1051- ret = mc_init_interrupts (pdev , port );
1059+ ret = mc_init_interrupts (pdev , & port -> plda );
10521060 if (ret )
10531061 return ret ;
10541062
@@ -1059,14 +1067,16 @@ static int mc_host_probe(struct platform_device *pdev)
10591067{
10601068 struct device * dev = & pdev -> dev ;
10611069 void __iomem * bridge_base_addr ;
1070+ struct plda_pcie_rp * plda ;
10621071 int ret ;
10631072 u32 val ;
10641073
10651074 port = devm_kzalloc (dev , sizeof (* port ), GFP_KERNEL );
10661075 if (!port )
10671076 return - ENOMEM ;
10681077
1069- port -> dev = dev ;
1078+ plda = & port -> plda ;
1079+ plda -> dev = dev ;
10701080
10711081 port -> axi_base_addr = devm_platform_ioremap_resource (pdev , 1 );
10721082 if (IS_ERR (port -> axi_base_addr ))
@@ -1075,7 +1085,7 @@ static int mc_host_probe(struct platform_device *pdev)
10751085 mc_disable_interrupts (port );
10761086
10771087 bridge_base_addr = port -> axi_base_addr + MC_PCIE_BRIDGE_ADDR ;
1078- port -> bridge_addr = bridge_base_addr ;
1088+ plda -> bridge_addr = bridge_base_addr ;
10791089
10801090 /* Allow enabling MSI by disabling MSI-X */
10811091 val = readl (bridge_base_addr + PCIE_PCI_IRQ_DW0 );
@@ -1087,10 +1097,10 @@ static int mc_host_probe(struct platform_device *pdev)
10871097 val &= NUM_MSI_MSGS_MASK ;
10881098 val >>= NUM_MSI_MSGS_SHIFT ;
10891099
1090- port -> msi .num_vectors = 1 << val ;
1100+ plda -> msi .num_vectors = 1 << val ;
10911101
10921102 /* Pick vector address from design */
1093- port -> msi .vector_phy = readl_relaxed (bridge_base_addr + IMSI_ADDR );
1103+ plda -> msi .vector_phy = readl_relaxed (bridge_base_addr + IMSI_ADDR );
10941104
10951105 ret = mc_pcie_init_clks (dev );
10961106 if (ret ) {
0 commit comments